Git分支学习简记

时间:2023-03-09 08:41:29
Git分支学习简记

简介

开始过了两遍Git的内容,第二天就已经忘记了分支(branch)的概念,开始还觉得不太用的到。然后又看了第二遍,才发现为什么大家说这个是Git里边极其重要的一个东西。

所谓branch,就类似于树的枝干,有一个主干,在Git里成为master,意思也很好理解;这个是必须存在的,然后你可以分出去其他的树干(但是都不是主干)。像树的分枝都会回到主干那里一样,Git里的分支也会汇聚到master那里。

比方我们现在有现成的代码,A想自己修改一下,但是不能直接改动,做法可以是copy过来修改一下,在Git里我们直接创建分支就可以了。再觉得完美了之后上传过去,这个时候直接合并分支就可以搞定了。

分支常用命令和功能介绍

通过git branch命令可以看到现在的分支情况,*代表我们目前所在的分支

# git branch
* master
test

可以看到我们有两个分支,有master还有一个test

通过git checkout test我们可以切换到test分支

#git checkout test
Switched to branch 'test'
#git branch
master
*test

通过git checkout -b  xx命令我们可以创建xx分支,-b 代表创建并直接切换到xx分支

通过git merge xx可以把xx分支合并到master分支上

完成合并之后可以删除xx分支,使用git branch -d xx命令,需要注意的是合并的时候需要解决冲突(即内容不一致的问题)

下面通过一个完整的例子(代码高亮不理想,凑合看吧)演示一下:

::01wang@~/Documents/git >>  git branch
master
* test
::11wang@~/Documents/git >> git checkout master
Switched to branch 'master'
Your branch is ahead of 'origin/master' by commit.
(use "git push" to publish your local commits)
::21wang@~/Documents/git >> git branch
* master
test
::27wang@~/Documents/git >> ls
readme.txt Spoon-Knife test
::45wang@~/Documents/git >> cat readme.txt
master branch`
::51wang@~/Documents/git >> git checkout -b test1
Switched to a new branch 'test1'
::02wang@~/Documents/git >> git branch
master
test
* test1
::05wang@~/Documents/git >> ls
readme.txt Spoon-Knife test
::07wang@~/Documents/git >> vi readme.txt
::18wang@~/Documents/git >> git add readme.txt
::23wang@~/Documents/git >> git commit -m "branch test1"
[test1 3a09722] branch test1
file changed, insertions(+)
::38wang@~/Documents/git >> git checkout master
Switched to branch 'master'
Your branch is ahead of 'origin/master' by commit.
(use "git push" to publish your local commits)
::53wang@~/Documents/git >> git branch
* master
test
test1
::56wang@~/Documents/git >> git merge test1
Updating c7ac8a8..3a09722
Fast-forward
readme.txt | ++
file changed, insertions(+)
::02wang@~/Documents/git >> cat readme.txt
master branch` test1 branch
::07wang@~/Documents/git >> git branch -d test1
Deleted branch test1 (was 3a09722).
::18wang@~/Documents/git >> git branch
* master
test