Git中的分支是什么?

4
我有几个Git仓库,它们都有一个名为“master”的分支。但是分支是什么,以及您可以用它们做些什么呢?
谢谢。

8
也许你应该尝试阅读文档,或者使用谷歌搜索。 - siride
1
@siride:也许你应该试着不那么傲慢,并链接到你认为最好的描述来回答提问者的问题。 - Ryan Bigg
1
很抱歉,但人们需要愿意进行一定基础水平的研究。几乎每个Git教程或文档都会在早期讨论分支。如果Time Machine花费了一些时间阅读有关Git如何工作的内容,他/她早就得到了答案。 - siride
5个回答

2
“分支通常是相互独立的平行开发流。类似于时间线。这里 是一个具有多个分支的软件项目的图片。
例如,您可能拥有一个包含所有稳定工作的分支,另一个包含实验性工作的分支。您可能还有一个中间的暂存分支,用于在将更改从实验分支移动到稳定分支之前对其进行验证。这些都是分支策略。不同的团队可能有不同的分支等。
根据您的版本控制系统,分支的实现和用法可能大不相同。在集中式版本控制系统(例如 SVN)中,分支本质上是分支时刻源代码的完整副本(类似于文件系统上的cp -R)。之后,该分支上的开发将独立于主分支进行。因此,您将会得到这样的结果。”
--o---0---o---o---o---- (parent branch)
       \
        \---o---o---0--- (new branch)

“o”表示提交,而“0”则是分支点。使用这个系统创建的分支是全局的(项目中的每个人都可以看到它们),并且它们非常重要。当你想要时,可以将新分支合并回父分支。这可能会导致合并冲突
使用分散式版本控制器(以git为例),分支更加轻量级。它们只是指向表示项目历史的DAG中的一个位置的指针。通过创建新的提交,您可以将它们向前推进。此外,分支将是本地的(即除非您决定发布它们,否则只有您可以看到它们)。
然而,分支和合并具有一些概念性内容,如果没有阅读文档,您可能无法理解。我建议您查看您正在使用的版本控制器的文档,并在Stack Overflow上提出具体问题。

2

分支用于在特定的环境中开发某个功能。这样你就不会将未经测试的代码与通常稳定的主干混合在一起。您可以在分支上进行开发和测试,然后将分支合并回主干。


这个答案基于SVN,但在Git中也是一样的。 - jakobbotsch
所以,举个例子:我有一个名为Foo的应用程序,它位于主分支。我正在开发一个名为Bar的功能,因此我会在一个单独的分支中进行开发,然后在Bar完成并经过测试后合并到主分支中? - user142019
是的,那就是你可以这样做的方法。 - jakobbotsch
Git与SVN有很好的集成,一些人在Git中进行合并,然后将其放回SVN,而公司并不知情 :D - Saif al Harthi

2

这是一篇我经常参考的好文章:Git分支模型成功案例

这篇文章是一个团队使用Git协作有效的实践案例。


1

由于您是GIT的新手,我热情推荐阅读本书的第3章:

http://progit.org/book/

我相信@Noufal和@Jakob已经给出了很好的答案。然而,当涉及到使用GIT的实际方面时,由于分支的不同语法(master、origin master、origin/master等),你总会犯错误。

此外,我建议阅读GIT的概念而不是如何使用它,所以请查看这个链接,你可能会对分支感兴趣:

http://www.eecs.harvard.edu/~cduan/technical/git/


0

除了提供的答案,还有一个关于分支和合并的Git网络广播,网址为http://gitcasts.com/或直接访问http://blip.tv/file/4094707


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接