4

git分支管理

 3 years ago
source link: https://segmentfault.com/a/1190000040580349
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

git分支管理

发布于 今天 14:11

本文转载参考于廖雪峰老师的博客Git教程。依照其博客进行学习和记录,感谢其无私分享,也欢迎各位查看原文。

  • 分支可以并行的管理版本,协同合作编写代码,在分支上完成工作,然后合并分支。
  • 查看分支和当前分支:git branch
  • 创建分支git branch <name>
  • 切换分支git checkout <name>
  • 创建并切换分支git checkout -b <name>
  • 合并指定分支到当前分支,git merge <name>
  • 删除分支git branch -d <name>

分支类似于平行的多个支线。

分支的作用:比如多人协作开发中,你开发的功能需要两周完成,第一周还没写完,如果提交,由于代码不完整,提交可能会导致别人不能干活,但是如果等代码全部写完再提交,又有丢失的风险。

借助分支,你可以创建一个属于自己的分支,多个人各自在自己的分支上正常工作,互不影响,等到开发完成后,在一次性合并到原来的分支上,保证了安全、高效、协同、互补影响。

Git分支的创建、切换、删除非常快,和文件多少无关。

创建与合并分支

版本回退中,Git的版本管理是将每次提交串成一条时间出现,这条时间线就是一个分支。

目前创建的Git仓库只有一个分支——主分支,即master分支,

HEAD严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是当前分支。

开始,master 分支是一条线,Git用master指向最新的提交,再用HEAD指向master,就能确定当前分支和当前分支的提交点。

master分支和head和提交

每次提交,master分支都会向前移动一步,随着不断的提交,master分支的线也越来越长。

当我们创建新的分支,比如dev分支,Git新建一个指针叫dev,指向master相同的提交,再把HEAD指向dev,就表示当前分支在dev上。

新dev分支和head和提交

Git创建分支很快,因为Git只增加一个dev指针,同时修改HEAD的指向,工作区的文件都没有任何变化。

现在对工作区的修改和提交就针对dev分支,比如新提交之后,dev指针往前移动,而master指针不变

新dev分支和head和提交2

当我们在dev上的工作完成了,就可以把dev合并到master上。

Git的合并很简单,就是直接把master指向dev的当前提交,这就完成了合并。

dev分支和master合并

Git合并分支也很快,仅仅是改改指针,工作区内容不变。

合并完分之后,如果删除dev分支只要把dev指针删除就可以

只剩下一条master分支

分支和master合并后删除dev分支

创建分支。

  • 创建dev分支,并切换到dev分支
$ git checkout -b dev
切换到一个新分支 'dev'

git checkout -b xx表示创建分支并切换。

  • 分步骤创建并切换分支dev2。如下
$ git branch dev2
$ git checkout dev2
切换到分支 'dev2'
  • git branch查看当前分支
$ git branch
  dev
* dev2
  master

git branch列出所有分支,当前分支前面有一个*号。

  • 现在可以在dev2分支上正常提交。如修改readme.txt文件。然后查看Git状态
$ git status
位于分支 dev2
尚未暂存以备提交的变更:
  (使用 "git add <文件>..." 更新要提交的内容)
  (使用 "git checkout -- <文件>..." 丢弃工作区的改动)

    修改:     readme.txt

修改尚未加入提交(使用 "git add" 和/或 "git commit -a")

提示当前分支位于dev2上,并且工作区readme.txt修改

$ git add readme.txt
$ git commit -m"modify readme.txt at branch"
[dev2 03d07d2] modify readme.txt at branch
 1 file changed, 1 insertion(+)

如上,在当前分支dev2上完成了提交。

  • dev2分支上提交完,切回master分支:
$ git checkout master
切换到分支 'master'
您的分支与上游分支 'origin/master' 一致。
liu@liu-virtual-machine:~/gitTest$ cat readme.txt

`this is a test that I learn and use git version control system
this is a beginning
wofaidognyixie dognxi

查看可以看到,readme.txt文件保持和修改前的一致。

  • 切换到dev2分支,可以看到dev2分支上内容为之前最新修改内容
$ git checkout dev2
切换到分支 'dev2'
$ cat readme.txt

`this is a test that I learn and use git version control system
this is a beginning
wofaidognyixie dognxi
create two new branch
  • dev2分支内容合并到master分支(当前分支为master
$ git merge dev2
更新 036ced2..03d07d2
Fast-forward
 readme.txt | 1 +
 1 file changed, 1 insertion(+)

此时查看readme.txt内容,已经和dev2一样

git merge命令用于合并指定分支到当前分支。

注意,上面合并时提示Fast-forward,Git指示本次合并是“快进模式”,即把master指向dev2的当前提交,所以速度很快。

  • 删除dev2分支,合并完成后就可以放心的删除dev2分支了。
$ git branch -d dev2
已删除分支 dev2(曾为 03d07d2)。
$ git branch
  dev
* master

删除后,查看branchdev2分支已经没有了。

Git创建、合并和删除分支都非常快,所以Git鼓励使用分支完成某个任务,合并后再删除分支,效率高并且安全。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK