#Git 分支管理
几乎每一种版本控制系统都会以某种形式支持分支。使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作。
有人把Git的分支模型称之为“必杀技特性”,而正是因为它,却能够将Git从版本控制系统家族里区分出来。
接下来我们动手实践。
创建分支命令:
git branch(branchname)
切换分支命令:
git checkout(branchname)
当你切换分支的时候,Git会用该分支的最后提交的快照替换你的工作目录的内容,所以多个分支不需要多个目录。
合并分支命令:
git merge
你可以多次合并到统一分支,也可以选择在合并之后直接删除被并入的分支。
# Git分支管理基本命令
列出分支
列出分支基本命令:
git branch
没有参数时,git branch 会列出你在本地的分支。
这行代码的意思是,我们有一个叫做“master”的分支,并且该分支是当前分支。当你执行git init 的时候,缺省状态下Git就会为你创建“master”分支。
当然,如果我们要手动创建一个分支也是可以的,执行git branch (branchname) 即可。
现在我们可以看到,有了一个新的分支testing。
当你以此方式在上次提交更新之后创建了新分支,如果后来又有了更新提交,然后又切换到了“testing”分支,Git将还原你的工作目录到你创建分支时候的样子。
接下来我将演示如何切换分支,我们用git checkout (checkout) 切换到我们要修改的分支。
神奇的事情发生了,当我们切换到“testing”分支时,我们添加的新文件test.txt被移除了,原来被删除的文件hello.php又出现了。切换回master的时候,它们又重新出现了。
当然,我们也可以使用git checkout -b (branchname) 命令来创建新分支并立即切换到该分支下,从而在该分支中操作。
现在先切换回master仓库
在master仓库下生成一个test2.txt文件
将test2.txt 添加到缓存区。
将缓存区中的test2.txt添加到仓库中。
可以在仓库中看到,我们已经成功将新建立的test2.txt添加到了仓库中。
建立一个新分支newtest并且立即进入。完整示例如下:
我们可以看到当我们使用
$ git checkout-b newtest
这条指令时,我们创建了一个新的分支newtest并且立即进入了该分支,而且该分支继承了主分支下的所有文件。当我们删除掉newtest分支中的test2.txt的时候,并不会影响到master分支下的文件。
#删除分支
删除分支命令
git branch-d(branchname)
这里我们删除掉testing分支
#分支合并
一旦某分支有了独立内容,你终究会希望将它合并回到你的主分支。你可以使用以下命令将任何分支合并到当前分支中去:
git merge
上述示例中我们将newtest分支合并到了主分支上去,test2.txt文件将被删除。
#合并冲突
合并并不仅仅是简单地文件添加、移除的操作,Git也会合并修改。
将修改的内容提交到“change_site”分支中。现在,假如切换回“master”分支我们可以看内容恢复到我们修改前的,我们再次修改test.txt文件。
现在这些改变已经记录到我的“master”分支了。接下来我们将“change_site”分支合并过来。
我们将前一个分支合并到“master”分支,一个合并冲突就出现了,接下来我们需要手动去修改它。
在Git中,我们可以用git add要告诉Git文件冲突已经解决。
现在我们成功解决了合并中的冲突,并提交了结果。
#Git 查看提交历史
在使用Git提交了若干更新之后,又或者克隆了某个项目,想回顾一下历史骂我们可以使用git log命令查看。
针对我们之前的一系列操作,使用git log 命令列出历史提交记录如下:
(按q退出)
我们可以用 --oneline 来查看历史记录的简洁版本。
这些告诉了我们,该项目的开发历史
我们还可以用 --graph 选项,查看历史中什么时候出现了分支、合并。以下为相同的命令,开启了拓扑图选项:
现在我们可以更清楚明了的看到何时工作分叉,又何时归并。
你也可以用 ‘--reverse’ 参数来逆向显示所有日志。
如果只想查找指定用户的提交日志可以使用命令:git lot --author,例如,假如我们要找到我(Ghost)提交的部分:
如果你还想指定特殊的日期,可以执行以下几个选项:--since 和 --before ,
但是你也可以用 --until 和 --after。
例如,如果我要看Git项目中一天前的所有提交,我可以执行以下代码,同时我使用了 --no-merges 隐藏了合并提交。
我们就可以看到我们昨天的所有操作啦。
所以我们在仓库中对代码做的所有操作都是有记录的哦,我们在对仓库操作的时候一定要小心谨慎~
领取专属 10元无门槛券
私享最新 技术干货