git pull origin develop
将冲突的文件拉取
创建分支
git branch
没有参数,显示本地版本库中所有的本地分支名称。
当前检出分支的前面会有星号。
git branch newname
在当前检出分支上新建分支,名叫newname。
git checkout newname
检出分支,即切换到名叫newname的分支。
git checkout –b newname master
这个命令将上面两个命令合并:在master分支上创建分支newname分支并检出到该分支。
合并分支间的修改 Merge
合并操作将两条或多条分支合并到一起,实际上有好几种分支合并方法,下面介绍主要的三种:
1.直接合并(straight merge):
把两条分支上的历史轨迹合并,交汇到一起。
比如要把dev分支上的所有东东合并到master分支:
首先先到master分支:git checkout master
然后把dev给合并过来:git merge dev
注意没参数的情况下merge是fast-forward的,即Git将master分支的指针直接移到dev的最前方。
换句话说,如果顺着一个分支走下去可以到达另一个分支的话,那么Git在合并两者时,只会简单移动指针,所以这种合并成为快进式(Fast-forward)。
2.压合合并(squashed commits):
将一条分支上的若干个提交条目压合成一个提交条目,提交到另一条分支的末梢。
把dev分支上的所有提交压合成主分支上的一个提交,即压合提交:
git checkout master
git merge --squash dev
此时,dev上的所有提交已经合并到当前工作区并暂存,但还没有作为一个提交,可以像其他提交一样,把这个改动提交到版本库中:
git commit –m “something from dev”
3.拣选合并(cherry-picking):
拣选另一条分支上的某个提交条目的改动带到当前分支上。
每一次提交都会产生一个全局唯一的提交名称,利用这个名称就可以进行拣选提交。
比如在dev上的某个提交叫:321d76f
把它合并到master中:
git checkout master
git cherry-pick 321d76f
要拣选多个提交,可以给git cherry-pick命令传递-n选项,比如:
git cherry-pick –n 321d76f
这样在拣选了这个改动之后,进行暂存而不立即提交,接着可以进行下一个拣选操作,一旦拣选完需要的各个提交,就可以一并提交。
冲突处理
当两条分支对同一个文件的同一个文本块进行了不同的修改,并试图合并时,Git不能自动合并的,称之为冲突(conflict)。解决冲突需要人工处理。
比如当前在master分支,想把dev分支merge过来,结果产生了一个冲突,打开文件内容可以看到这么一个冲突:
<<<<<<< HEAD test in master ======= test in dev >>>>>>> dev
<<<<<<<标记冲突开始,后面跟的是当前分支中的内容。
HEAD指向当前分支末梢的提交。
=======之后,>>>>>>>之前是要merge过来的另一条分支上的代码。
>>>>>>>之后的dev是该分支的名字。
对于简单的合并,手工编辑,然后去掉这些标记,最后像往常的提交一样先add再commit即可。
删除分支
有些分支没有必要长期保存,比如分支中的代码已经打了标签并已发布,或者实验分支已经成功完成工作或中途废弃等等。
注意:打了标签的分支,Git在删除该分支时,从版本树起始到此标签间的全部历史轨迹均会保留,此时删除分支操作只是删除分支本身的名称,因此可以说该分支没有必要长期保存。
而在其他版本控制工具中,删除分支通常意味着删除分支上的所有历史轨迹,所以不能因为打了标签就认为其没有必要保存。
删除一个分支dev2:
git branch –d dev2
注意不能删除当前所在分支,需要转到别的分支上。
如果要删除的分支已经成功合并到当前分支,删除分支的操作会直接成功。
如果要删除的分支没有合并到当前所在分支,则会出现提示,如果确定无须合并而要直接删除,则执行命令:
git branch –D dev2
进行强删。
分支重命名
重命名分支:
git branch –m oldname newname
-m不会覆盖已有分支名称,即如果名为newname的分支已经存在,则会提示已经存在了。
如果改成-M就可以覆盖已有分支名称了,即会强制覆盖名为newname的分支,这种操作要谨慎。
相关推荐
### Pragmatic Version Control Using Git:关键知识点解析 #### 一、Git的引入与优势 在软件开发领域,版本控制系统(Version Control System, VCS)是必不可少的工具之一。随着技术的发展,传统的集中式版本控制...
本书首先介绍了如何安装Git并配置个人用户信息,然后逐步引导读者掌握基本的命令,如`git clone`, `git add`, `git commit`, `git push`和`git pull`等,这些是进行日常开发工作的基础。 ### 三、合作与共享 Git的...
### Pragmatic Version Control - 使用 Git 的核心知识点 #### 一、Git 介绍与优势 在《Pragmatic Version Control - Using Git》这本书中,作者 Travis Swicegood 对 Git 进行了深入浅出的讲解。Git 是一个分布式...
Git官网上列出的五本书都在这里了。 git internals Pragmatic Version Control Using Git Version Control with Git Pro Git Pragmatic Guide to Git
根据给定的文件信息,我们可知这是一本名为《Pragmatic Guide to Git》的书籍,作者为Travis Swicegood。这本书旨在为初学者提供一本关于Git的实用指南。书中内容组织在两页的版面中,目的是为读者提供足够的上下文...
本书的作者Travis Swicegood是资深的程序员,他在《Pragmatic Bookshelf》系列中提供了深入浅出的Git教程。Pragmatic Bookshelf出版社位于北卡罗来纳州的罗利市和德克萨斯州的达拉斯市。本书中提及的商标和产品名称...
### Pragmatic Version Control Using Subversion #### 一、引言 《Pragmatic Version Control Using Subversion》是一本深入浅出地介绍Subversion版本控制系统使用的书籍。Subversion(简称SVN)是一种广泛应用于...
### Pragmatic Version Control 实效版本控制 #### 知识点概述 《Pragmatic Version Control 实效版本控制》是一本旨在帮助软件开发者理解和掌握版本控制系统的书籍,尤其聚焦于CVS这一具体工具的应用。该书由Dave...
This book tells you how to improve the effectiveness of your software development process using version control. Version control, sometimes called source code control, is the first leg of our...
### 关于《实用版本控制与Subversion》的知识点解析 #### 一、Subversion简介 **Subversion**(简称SVN)是一种集中式版本控制系统,它允许开发人员和其他团队成员在一个中心存储库中管理和协作编辑文件。...
《实用版本控制:使用CVS》是一本专为软件开发者设计的指南,旨在深入解析CVS(Concurrent Versions System)的使用方法与最佳实践。CVS作为一种开源版本控制系统,在软件开发领域有着广泛的应用,尤其在早期互联网...
《Pragmatic Guide to Git》是一本非常适合初学者入门Git的书籍。该书通过简单明了的语言和实际案例,让读者能够快速掌握Git的核心概念和技术要点。书中不仅涵盖了Git的基础知识,还深入讲解了如何高效地利用Git进行...