Listen, a tree is growing
分支介绍
分支及其作用
当我们开发主线时,如果要添加新的功能,我们一般不会直接在主线上改动,而是创建分支并修改分支,以免影响主线开发。所以分支的作用就是创建副本,使我们能够在副本上添加功能,而不影响主线。git采用指针的方式管理分支,速度非常快。
相关操作
查看分支
1 | git branch -a #列举出所有分支以及当前分支 |
分支创建
1 | git checkout -b dev /origin/dev |
这个命令做了下面两件事:
- 创建一个名为dev的基于远程/origin/dev的本地分支
- 将当前分支切换为dev
分支切换
如果要切换到一个已经存在的分支,可以使用如下命令:
1 | git checkout dev # 将分支切换为dev |
有些时候,我们需要切换到历史版本,也可以使用checkout,我们可以利用git log
查看历史提交记录,然后使用git checkout xxxxxxxxxxxxxx
的方式切换到指定版本号对应的分支,其中xxxxxxxxxxxxxx是版本号。例如:
1 | git log |
当然,切换分支后,本地的修改会被保留,使用git stash
可以删除这些修改(慎用!)
分支合并
假设我们的当前分支为master,那么如果我们要将分支dev合并至master,可以执行下面的命令
1 | git merge dev |
分支删除
删除本地和远程的分支,可以使用如下代码:
1 | git branch -D branch_name # 删除本地分支 |
冲突解决
使用分支开发过程中一个很大的问题就是解决冲突,当多个开发者试图编辑相同文件的同一行时,就可能发生冲突。Git对冲突的解决方式是:保留多个分支中的冲突的内容,然后人工进行冲突处理后再允许合并。冲突只影响合并过程。
例子
在下面的分支中,两个分支各自有增有减,因此需要手动合并
1 | <<<<<<< HEAD (Current change) |
上半部分为当前分支中的内容,而下半部分为合并入的分支的内容
常见的引起冲突的情况
字符集错误
不同的编辑器使用的字符集可能不一样,例如在windows环境下的换行在linux下会显示为行尾的^M
字符。所以如果需要多个人对同一个文件进行修改,尽可能使用相同的开发环境。针对行尾的^M
处理方式如下:
在linux的vim下命令格式输入:
:e ++ff=unix
,显示结尾的^M输入
:%s/\r//g
删除
解决方式
解决方式一般就是手工修改代码,让冲突的部分不再冲突即可。