场景 | Svn | Git | |
1 | 下载代码 | svn checkout | git clone |
2 | 加入版本控制 | svn add | git add |
3 | 本地提交 | - | git commit |
4 | 提交到服务器 | svn commit | git push |
5 | 获取其他人的更新 | svn update | git fetch/pull[fetch不会自动merge,pull自动merge] |
6 | 查看状态 | svn status / log / diff | git status / log / diff |
7 | 新建本地分支 | - | git branch |
8 | 切换分支/版本 | svn switch | git checkout |
9 | 合并分支 | svn merge | git merge/rebase |
git pull
【git pull = git fetch + git merge】
【git pull origin master】表示将远程origin主机的master分支拉取过来和本地的当前分支进行合并。
【git pull origin master:brantest】将远程主机origin的master分支拉取过来,与本地的brantest分支合并。
git commit
【git commit --amend(回车后在vim填写及操作)】--amend命令是 [git reset --soft HEAD^] 和 [git commit -a -F .get/COMMIT_EDITMSG] 两条命令的结合体,意思就是修改上次的提交(提交的内容和msg),不会产生额外的commit。
git push
git push <远程主机名> <本地分支名> : <远程分支名>
【git push origin master:refs/for/master】是将本地的master分支推送到远程主机origin上的对应master分支。(origin 是远程主机名,第一个master是本地分支名,第二个master是远程分支名)
【git push origin master】如果远程分支被省略,如上则表示将本地分支推送到与之存在追踪关系的远程分支(通常两者同名),如果该远程分支不存在,则会被新建。
【git push origin HEAD:refs/for/master】HEAD是一个特别的指针,它是一个指向你正在工作的本地分支的指针,可以把它当做本地分支的别名,git这样就可以知道你工作在哪个分支。refs/for :意义在于我们提交代码到服务器之后是需要经过 code review 之后才能进行merge的,而refs/heads是不需要评审的。