我们真的需要在Git分支吗?
我在上第一节软件工程课。 这是我们第一次在团队中使用git和github。 在课堂上,我们的老师告诉我们,你通常应该从母版分支,在你完成新功能后,将其合并回母版。 这就是我一直在做的。 然而,我小组的其他成员没有分支。 他们从github上的主机拉到本地机器,进行编辑,在本地主机上完成功能,然后推送到github上的主机 我试图说服他们加入分支机构,但现在我想了想,我发现这更令人困惑。 有人告诉我,分支的目的是复制代码,而不必担心意外地放入无法命名的代码会破坏主程序 但他们当地的主人真的就跟树枝一样吗?在进行编辑时,他们不会更改github上的主控程序,因此其他人可以自由地从github中提取工作代码。然后它们合并,类似于分支 我很困惑,如果他们所做的似乎是有效的,我们为什么要分支 谢谢 但他们当地的主人真的就跟树枝一样吗 是的 我很困惑,如果他们所做的似乎是有效的,我们为什么要分支 这取决于您的工作流程。您所描述的似乎是此工作流: Alice创建一个分支我们真的需要在Git分支吗?,git,github,branch,git-branch,branching-and-merging,Git,Github,Branch,Git Branch,Branching And Merging,我在上第一节软件工程课。 这是我们第一次在团队中使用git和github。 在课堂上,我们的老师告诉我们,你通常应该从母版分支,在你完成新功能后,将其合并回母版。 这就是我一直在做的。 然而,我小组的其他成员没有分支。 他们从github上的主机拉到本地机器,进行编辑,在本地主机上完成功能,然后推送到github上的主机 我试图说服他们加入分支机构,但现在我想了想,我发现这更令人困惑。 有人告诉我,分支的目的是复制代码,而不必担心意外地放入无法命名的代码会破坏主程序 但他们当地的主人真的就跟树枝
Alice
跟踪master
,Bob创建一个分支Bob
也跟踪master
。Alice总是提交给Alice
,Bob总是提交给Bob
。然后,当他们对自己的更改感到满意时,他们就会合并到master
当然,这与Alice和Bob在本地master
分支上的工作几乎没有什么区别
当同一个人同时处理多个功能时,问题往往会出现。比如说
Alice正在处理功能A
,Bob正在处理功能B
。Alice已经完成了功能A
的一半,并且在Alice
中进行了一些提交。然而,功能A
很难实现,因此Alice决定她应该致力于功能C
,并对Alice
做出一些承诺。Bob完成了功能B
并决定处理功能A
,因此将alice
拉入Bob
Bob完成功能A
后,他想将Bob
合并到master
中。但是,bob
现在包含功能A
、功能B
和功能C
的部分,但是功能C
尚未准备好合并!很容易看出,这样的工作流会导致许多混乱的合并冲突
诀窍在于,与其拥有个人分支,不如拥有特征分支。Alice应该有一个分支用于
功能a
和功能C
,Bob应该有一个分支用于功能B
和功能a
。这样,它们都可以在不同的功能上工作,而不会互相践踏。这个想法是,您有一个主分支,其中代码是稳定的和合并的
比方说,我有一个应用程序,刮一个网站
我将创建一个名为develope/pulldata的新分支。在这个分支中,我将致力于提取数据。我的一个团队成员可以在数据上应用一些逻辑,这样他就可以创建自己的分支develop/applylogic
一旦他提交了一些代码并且代码稳定,他就可以打开一个pull请求,将他的代码合并到master,您可以在githubui中查看,查看他更改了哪些代码,并决定是否要合并,或者是否需要任何更改
现在,过了一段时间,我的代码完成了,我打开了一个向master的请求,这样我的同事就可以查看我的代码并批准或建议更改。很容易查看,团队中的每个人都知道master branch是稳定的。但是,其他分支机构不必这样做。当它们被合并到主控时,它们必须是短的。保持短一点。机器中的主机是本地主机。将所有更改推送到
origin/master
服务器
不鼓励在master
分支上工作的一个主要原因是有几个人在项目上工作,其中一个分支需要成为创建分支的所有人的共同基础
例如,您有一个要向其中添加蓝牙模块的产品,然后您创建了一个分支add_Bluetooth from master,然后将该分支合并到master。另一个人正在使用wifi,他可以将他的分支合并到master。这只是常见的CVS工作流,创建分支会导致并行工作
克隆时会发生什么? 实际上,
git clone
会获取所有远程分支,它会为您创建一个本地分支,即主分支。只需键入以下命令git branch-a
git branch -a
* master
remotes/origin/HEAD
它们是其他命令,您可以使用git branch-r
查看远程分支
您可以通过操纵到此位置来检查本地分支创建的引用refs/remotes/origin
在实际项目中,人们在功能上进行协作,团队成员在代码合并之前查看其他人的代码,人们同时处理不同的功能或修复程序,功能可能会持续很长时间,因此必须保存在开发人员的机器上,等等。所有这些都是通过分支和将分支推送到github实现的。好的,谢谢!我认为我的团队计划一次开发一个功能,并且自己开发。但是现在我可以看到,如果人们在一次处理多个功能时与其他成员协作,那么分支是非常重要的。当你刚开始创建功能分支时,创建功能分支可能显得有些过火,但它们确实很难实现