面试的时候有问到git的相关操作,觉得自己答得不太好,明明git rebase有专门去看过来着...所以说好记性不如烂笔头(逃)
首先上经典图, 感觉比较形象地描述了整个git的流程。
我们一般的操作就是,通过clone远程库(Remote
)代码到本地库(Repository
),工作区(Workspace
)是实时反映代码相对于Repository
变动的。当我们执行add时,会把代码保存到暂存区(stage
,图上好像是index?),此时执行git commit -m 会把stage
区代码提交至Repository
,最后push执行的是Repository
向Remote
的同步。
先说一些基操吧,当复习了:
- git clone 克隆remote到repository
- git pull = git fetch + git merge
- git checkout branchName 切换指定分支
- git branch branchName 新建本地分支(不切换)
- git checkout -b branchName 新建本地分支(切换)
- git checkout commitId -b branchName 对指定commitId新建分支(切换)
- git branch branchName commitId 对指定commitId新建分支(不切换)
- git branch -track branchName remoteBranchName 新建本地分支并关联远程分支
- git branch --set-upstream [branch] [remote-branch]建立当前分支的远程分支关联
- git branch -d branchName 删除本地分支
- git push origin --delete branchName 删除远程分支
- git config [--global] user.name "[name]" 设置用户名
- git config [--global] user.email "[email address]" 设置邮箱
- git add ./fileName 提交workplace区代码至stage区
- git commit -m 提交stage区代码至repository并带上信息
- git push 提交到远程 强制回退可以-f origin oBranchName
- git merge 合并指定分支
- git tag tagName 打tag
- git cherry-pick commitId 获取某一个分支的单笔提交,并作为一个新的提交引入到你当前分支(这个超好用,经常不想合并旧分支但是想合并某次提交的更新就用它!!!)
- git log 可以查看提交日志 commmitId之类的,常跟reset一起使用
- git reset --hard/soft/mixed HEAD~/commitId 回滚本地提交
hard 重置stage区和workPlace,包括你commit后可能的一些改动
soft 把respository取消的内容都放进stage区
mixed 默认 把respository取消的内容都放进workplace里面 - git stash /stash pop 暂时将未提交的变化移除,稍后再移入
- git rebase git pull -- rebase 具体的要看文章理解 感觉变基这个名称非常精确了 此操作常用于解决提交远程冲突时避免自动merge产生的分叉
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。