git常见操作
新建分支并且切换过去
git checkout -b <branchName>
合并分支
git merge <branchName>
将[branchName] 对应的分支内容,合并到当前head指向的分支
合并的区别
- Fast-forward
即,合并分支和原分支在同一路径上,不会发生冲突,只用将分支指针指向合并分支即可
两个分支不在同一路径上,即可能需要解决冲突,此时,会新建一个提交来完成此次合并
在这种情况下,仍有两种情况需要讨论
- 两个分支无冲突,则会直接将head指向的分支改为指向合并的指针指向的commit
- 两个分支有冲突,则解决完冲突文件后再手动提交
删除分支
git branch -d <branchName>
将本地分支推送到远程仓库
git push <originName> <remoteBranch>/<localBranch>
git push origin master
即为 git push origin master:master 的简写
更新远程分支
git fetch <originName>/<branchName>
git merge <originName>/<branchName>
或者
git pull <originName>/<branchName>
有一个很重要的思想
要把远程分支当成一个特殊的分支去对待就行
跟踪远程分支
新建一个本地分支跟踪远程分支
git checkout --track <branchName> <originName>/<branchName>
git checkout -b <branchName> <originName>/<branchName>
使用已有分支跟踪远程分支git branch -u <originName>/<branchName>
git push --set-upstream <originName>/<branchName>
更新远程分支,并查看其信息
git fetch --all; git branch -vv
合并时忽略空白
变基合并
git checkout experiment
git rebase master
或者git rebase experiment master
变基合并会将合并入的分支的提交一个个合并,并生成commit,可能要手动解决好几次冲突问题
但是变基合并可以让分支变得更加简洁,而且推送到远程仓库后其他用户拉去后可以直接fast-forward 合并
将两个分支的分叉处后面的提交合并到某个分支中
git rebase --onto master server client
以上命令的意思是:“取出 client 分支,找出处于 client 分支和 server 分支的共同祖先之后的修改,然 后把它们在 master 分支上重演一遍”。 这理解起来有一点复杂,不过效果非常酷。