分支简介
分支创建
git branch testing
分支切换
git checkout testing
分支新建与合并
新建分支
git checkout -b iss53
分支的合并
git checkout master
git merge iss53
分支删除
git branch -d iss53
遇到冲突时的分支合并
解决冲突之后,对冲突文件使用git add命令将其标记为冲突已解决。
分支管理
当前分支列表
git branch
每个分支最后一次提交
git branch -v
已经合并到当前分支的分支
git branch --merged
未合并到工作的分支
git branch --no-merged
分支开发工作流
长期分支
master
dev
特性分支
issue
hotfix
远程分支
远程引用列表
git ls-remote
或
git remote show
推送
git push origin serverfix
等价于
git push origin serverfix:serverfix
其他协作者抓取数据是,本地会生成一个远程分支origin/serverfix,指向服务器的serverfix分支的引用。
git fetch origin
但是本地不会生成一个新的serverfix分支,只有远程分支的引用。
可以使用如下命令追踪:
git checkout -b serverfix origin/serverfix
跟踪分支
Git提供了--track快捷方式跟踪分支
git checkout --track origin/serverfix
可以自定义本地分支名字
git checkout -b sf origin/serverfix
设置已有的本地分支追踪刚刚拉取的远程分支,或者想要修改正在追踪的上游分支,可以使用-u或者--set-upstream-to选项运行git branch设置
git branch -u origin/serverfix
查看所有跟踪分支
git branch -vv
拉取
git fetch 从服务器抓取本地没有的数据时,并不会修改工作目录中的内容。需要自己合并。
git pull在大多数情况下的含义是一个git fetch 紧接着一个git merge
删除远程分支
git push origin --delete serverfix
Rebasing
Rebase的基本操作
原理:首先找到这两个分支的最近共同祖先,然后对比当前分支相对于该祖先的历次修改,提取相应修改并存入临时文件,然后将当前分支指向目标基底,最后以此将之前另存为临时文件的修改依序应用。
git checkout feature
git rebase master
git checkout master
git merge feature
更有趣的Rebase例子
git rebase --onto master feature1 feature2
git checkout master
git merge feature2
取出feature2分支,找出feature2分支和feature1分支共同祖先之后的修改,然后把它们在master上重放一遍。
git rebase [basebranch] [topicbranch]可以直接讲特性分支rebase到目标分支,能省去切换到特性分支,再去执行rebase命令。
git rebase master feature
git checkout master
git merge feature
Rebase的风险
- 不要对在你的仓库外有副本的分支执行rebase
网友评论