git入门二(新建分支)

这一节讲下git的分支功能,分支功能是什么呢?其实这才是真正的软件版本管理核心,比如你的项目想添加一个的功能,但是这个版本是测试的,不一定上线,再或者想开发一个2.0版本专门用于某个场合。传统的做法就是把原来的项目代码,全部都复制一份。然后还傻乎乎地为了区别,把文件夹的名字分成1.0版本和2.0版本,别笑华哥,我之前开发OpenCDN就是这样的。到后来以至于我根本搞不清楚各个版本了,而且还浪费磁盘空间。总之看起来就是很不爽,但是用git可以解决版本控制的问题。

git通过增加分支的方法来实现,git默认的主分支就是master,可以用下面的命令查看。

git branch #查看分支
git branch new_branch #创建一个新的分支
git checkout new_branch #切换到新的分支
git checkout -d new_branch #删除分支

下面是一段测试demo
root at localhost in ~/gittest (master)
$ git branch
* master

root at localhost in ~/gittest (master)
$ git branch test

root at localhost in ~/gittest (master)
$ git branch
* master
  test

root at localhost in ~/gittest (master)
$ git checkout test
Switched to branch 'test'

root at localhost in ~/gittest (test)
$ git branch
  master
* test

root at localhost in ~/gittest (test)
$ git checkout master
Switched to branch 'master'

root at localhost in ~/gittest (master)
$ git branch -d test
Deleted branch test (was c469797).

root at localhost in ~/gittest (master)
$ git branch
* master

*代表就是你当前所在的分支。用图来解释
git2
可以看到每次commit都会有一个快照,对于每个快照都会挂在git这棵树上,每个branch都会指向最近一次提交的branch。而其中的HEAD指针指向的就是你当前工作的branch。checkout所做的一件事情就是把HEAD指针指向某个branch,而branch对应是最近的commit快照,所以通过HEAD可以来操作最近的快照。
在新分支上开发新功能
root at localhost in ~/gittest (master)
$ git branch
* master
  test

root at localhost in ~/gittest (master)
$ cat hello.txt
This is hello from git1

root at localhost in ~/gittest (master)
$ git checkout test
Switched to branch 'test'

root at localhost in ~/gittest (test)
$ git branch
  master
* test

root at localhost in ~/gittest (test)
$ echo "add a new line" >> hello.txt

root at localhost in ~/gittest (test●)
$ git commit -a -m "change hello.txt"
[test caf4d96] change hello.txt
 1 file changed, 1 insertion(+)

在新的branch test里面你修改了新的模块,增加了新的一行,这时候其实branch分支已经往前走了一步,但是master还是在以前的版本
root at localhost in ~/gittest (test)
$ git checkout master
Switched to branch 'master'

root at localhost in ~/gittest (master)
$ git branch
* master
  test

root at localhost in ~/gittest (master)
$ cat hello.txt
This is hello from git1

如上所示,master版本是没有变化的,就这样你可以同时在两个版本上开发了。

标签:Linux, Git

评论已关闭