Git Book读书笔记--git分支
来源:互联网 发布:sqlserver 参考手册 编辑:程序博客网 时间:2024/06/08 07:13
Git Book中文版
git分支
查看分支
git branch
创建分支
git branch [branch_name]
切换分支
git checkout [branch_name]
查看项目分叉历史
$ git log --oneline --decorate --graph --all* 8740aba (HEAD -> master) 1.txt master提交| * e5c61aa (test) 1.txt修改|/* 3479e2f first commit
合并分支
git merge [branch_name] # 该分支合并到当前分支(HEAD分支)
快进(fast-forward):当你试图合并两个分支时,如果顺着一个分支走下去能够到达另外一个分支,那么git在合并两者的时候,只会简单的将指针向前推进,因为这种情况下的合并操作没有需要解决的分歧。
合并冲突:如果你在两个分支中,对同一个文件的同一个部分进行了不同的修改,git就没有办法干净的合并他们。在合并的时候就会产生冲突。
如:
$ git merge testAuto-merging 1.txtCONFLICT (content): Merge conflict in 1.txtAutomatic merge failed; fix conflicts and then commit the result.
执行git status
$ git statusOn branch masterYou have unmerged paths. (fix conflicts and run "git commit") (use "git merge --abort" to abort the merge)Unmerged paths: (use "git add <file>..." to mark resolution) both modified: 1.txtno changes added to commit (use "git add" and/or "git commit -a")
冲突的文件部分显示:
<<<<<<< HEADmaster分支:1.txt第二次修改=======test分支:1.text修改>>>>>>> test
解决冲突:对于上述冲突,你可以选择保留=======
上面的部分,也可以是下面的部分,或者将<<<<<<< HEAD
,=======
,>>>>>>> test
删除,手动合并。
删除分支
git branch -d [branch_name]
查看每个分支最后一次提交
git branch -v
查看那些分支合并到master分支
git branch --merged
查看那些分支未合并到master分支
git branch --no-merged
如果分支没有合并到master分支,尝试使用git branch -d
命令删除会失败
$ git branch -d zhangerror: The branch 'zhang' is not fully merged.If you are sure you want to delete it, run 'git branch -D zhang'.
当然,如果你真的想删除没有合并到master的分支,可以使用-D选项强制删除。
$ git branch -D zhangDeleted branch zhang (was 0618526).
分支开发工作流
长期分支:
短期分支(特性分支):用来实现单一特性或其相关工作。
远程分支:
变基
在git中整合来自不同的修改主要有2中方法,merge
和rebase
。
分叉提交历史的合并的2中方法:
分叉提交历史合并之前:
merge
:将2个分叉的分支,进行merge合并。
当前分支切换到master分支,执行
git merge experiment
如图:
rebase
:通过提取补丁的形式,在C3的基础上在做一次。在Git中,这种操作叫做变基。
执行命令:
git checkout experimentgit rebase master
效果如图:
进行2个分支合并(快进方式):
git checkout mastergit merge experiment
最终效果如图:
变基例子:
你创建了一个特性分支server
,为服务端添加了一些功能,提交了C3
和C4
。然后从C3
上创建了特性分支 client
,为客户端添加了一些功能,提交了C8
和C9
。 最后,你回到server
分支,又提交了C10
。
如图:
现在希望将client
中的修改合并到主分支并发布,但暂时不想合并server
中的修改,这是可以使用git rebase
命令的--onto
选项,选中在client
分支里但不在server
分支里的修改,将它们在master
分支上重放。
- 将
client
分支的修改变基到master
分支上
执行下面命令:
git rebase --onto master server client
以上命令的意思是:取出client
分支,找出处于client
分支和server
分支的共同祖先之后修改,然后把它们在master
分支重放一遍。
- 合并
client
和master
分支(快进合并)
git checkout mastergit merge client
- 将
server
分支的修改变基到master
分支上
git rebase --onto master server
- 将
server
分支合并到master
分支上
git checkout mastergit merge server
- 删除
server
分支和client
分支
git branch -d clientgit branch -d server
最终提交历史会变成:下图所示
变基的风险
不要对你的仓库外有副本的分支执行变基。
Git Book中文版
- Git Book读书笔记--git分支
- Git Book读书笔记--Git的基础
- Git Book读书笔记--git常用命令总结
- git book
- git book
- Git book 读书笔记 (一) -- Git 简介和安装
- Git Book读书笔记--git远程仓库&&打标签&&别名
- Git Book读书笔记--git储藏和清理&&搜索
- Git book 读书笔记 (二) -- 创建自己的仓库
- Git分支
- Git 分支
- git 分支
- Git 分支
- Git 分支
- git 分支
- git 分支
- Git 分支
- git分支
- DOCKER基础
- 安装code review系统
- php基础知识 2,变量与数据类型
- 使用Maven导入Oracle数据库驱动
- 键盘控制图片移动事件
- Git Book读书笔记--git分支
- 图像处理-运动模糊(motion blur)
- 大数据性能调优之HBase的RowKey设计
- AES
- HDU1016 Prime Ring Problem
- G Plumbing the depth of lake 河南第十届ACM真题 【搜索】
- Java Catch 小知识
- EPOLIIONESHOT事件
- BZOJ1085 骑士精神