前言
Git 相较于其他版本控制工具,其强大的、低开销的分支管理流程是其最大的优势。频繁地在各个分支中检出的成本非常小,几乎在瞬间就可以改变整个工作目录。这使得giter们为新功能新建一个分支,在新分支上工作成了一种新的工作方式。
因为本人是一个Java程序员,在这里安利一个开发工具 IntelliJ IDEA,后面的 git 操作将都在 Idea 中操作,辅助一些控制台信息。
分支的新建与合并
新建分支
-
打开 Idea 下面的
Version Control选项卡。 -
选到
Log选项卡下面。
此时,你可以看到当前git库中所有的版本信息。
-
右键某一个版本,在右键菜单中找到
New Branch...就是啦。 -
然后在弹出的输入框中给新分支起一个名字,新分支就在本地创建好了。
红色方框标注的地方如果勾选,会默认帮你切(checkout)到新分支下。 我们是通过Idea的UI新建分支的,新建完分支后你可以打开
console选项卡,查看详细的命令。
正如你看到的,我们此次新建分支的操作,其命令其实就是
git -c core.quotepath=false -c log.showSignature=false checkout -b test 3f0ac5519d781fac4f3f52c3145f78fe425867c2 --
Idea 中彩色标签的意义
看到上面红框中的标签了吗?绿色代表本地分支,黄色代表HEAD(当前所在分支),紫色代表远程仓库分支。
选中有标签的这个版本,你会看到具体的标签(分支)的名字。如下图:
分支管理
刚刚我们新建了一个分支test,并checkout到了test分支,现在我们要对test进行管理,需要先切换到另外一个分支。这里我们先切换回master分支吧。如下图:
控制台打印如下:
22:33:35.825: [whl88.github.io] git -c core.quotepath=false -c log.showSignature=false checkout master --
Your branch is up to date with 'github/master'.
Switched to branch 'master'
现在在test分支上打开右键菜单
红框中的菜单都很简单,我这里简单说一下。
| 菜单 | 意义 |
|---|---|
| Checkout | 检出,也就是切换到这个分支 |
| Checkout As... | 也是检出,但是是以新分支检出。它与Checkout相比,就像保存,与另存为...的区别。 |
| Compare with Current | 与当前分支(例子中当前分支是master)比较 |
| Rebase Current onto Current | 检出所选分支并做变基。(将当前分支提交加入到所选分支) |
| Merge into Current | 合并到当前分支(将所选分支合并到当前分支) |
| Rname | 修改所选分支名称 |
| Delete | 删除所选分支 |
远程分支
远程跟踪分支是远程分支状态的引用。 它们是你不能移动的本地引用,当你做任何网络通信操作时,它们会自动移动。 远程跟踪分支像是你上次连接到远程仓库时,那些分支所处状态的书签。
它们以
(remote)/(branch)形式命名。 例如,如果你想要看你最后一次与远程仓库origin通信时master分支的状态,你可以查看origin/master分支。 你与同事合作解决一个问题并且他们推送了一个iss53分支,你可能有自己的本地iss53分支;但是在服务器上的分支会指向origin/iss53的提交。
如上图,绿色框是本地分支,红色框是远程分支。右键菜单中的操作跟本地分支差不多,这里就不赘述了。
推送分支
前文中我们已经创建了test分支,我们可以在这个分支上工作并提交(commit)代码。希望与同事在这个分支上合作开发的,需要推送(push)这个分支到远程。操作方法是
点击Push按钮就OK啦!
总结
分支的应用,无非就是新开分支、在分支上工作、修改、删除、对比、合并分支这些操作。借助Idea,这些操作都变得很简单。至于命令行我认为了解一下还是有必要的,因为提供git图形化界面的软件很多,大家的UI都不一样,但是命令行是一样的;还有就是在你翻看大牛的帖子的时候总不至于表现出这种表情。
最后,想要把git玩溜,推荐大家看看官方的书籍,有中文版的,很Nice。我认为翻译得很准确,例子举得也很恰当。如果你看得有点晕乎,那一定要静下心来认真理解他的表述和例子,不行就看两遍,一定会对git有一个非常全面的认识。