logo头像

保持一颗好奇心

Git 分支的用法

前言

过年在家浪了好几天,写篇博客热热身,准备好投入到工作中去。^_^

Git 相较于其他版本控制工具,其强大的、低开销的分支管理流程是其最大的优势。频繁地在各个分支中检出的成本非常小,几乎在瞬间就可以改变整个工作目录。这使得giter们为新功能新建一个分支,在新分支上工作成了一种新的工作方式。

因为本人是一个Java程序员,在这里安利一个开发工具 IntelliJ IDEA,后面的 git 操作将都在 Idea 中操作,辅助一些控制台信息。

分支的新建与合并

新建分支

  1. 打开 Idea 下面的 Version Control 选项卡。

  2. 选到 Log 选项卡下面。

    此时,你可以看到当前git库中所有的版本信息。

  3. 右键某一个版本,在右键菜单中找到 New Branch... 就是啦。

  4. 然后在弹出的输入框中给新分支起一个名字,新分支就在本地创建好了。

    红色方框标注的地方如果勾选,会默认帮你切(checkout)到新分支下。
    我们是通过Idea的UI新建分支的,新建完分支后你可以打开console选项卡,查看详细的命令。

    正如你看到的,我们此次新建分支的操作,其命令其实就是

    1
    2
    > git -c core.quotepath=false -c log.showSignature=false checkout -b test 3f0ac5519d781fac4f3f52c3145f78fe425867c2 --
    >

Idea 中彩色标签的意义

看到上面红框中的标签了吗?绿色代表本地分支,黄色代表HEAD(当前所在分支),紫色代表远程仓库分支。

选中有标签的这个版本,你会看到具体的标签(分支)的名字。如下图:

分支管理

刚刚我们新建了一个分支test,并checkout到了test分支,现在我们要对test进行管理,需要先切换到另外一个分支。这里我们先切换回master分支吧。如下图:

控制台打印如下:

1
2
3
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有一个非常全面的认识。

支付宝打赏 微信打赏

赞赏是不耍流氓的鼓励