Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我们真的需要在Git分支吗?_Git_Github_Branch_Git Branch_Branching And Merging - Fatal编程技术网

我们真的需要在Git分支吗?

我们真的需要在Git分支吗?,git,github,branch,git-branch,branching-and-merging,Git,Github,Branch,Git Branch,Branching And Merging,我在上第一节软件工程课。 这是我们第一次在团队中使用git和github。 在课堂上,我们的老师告诉我们,你通常应该从母版分支,在你完成新功能后,将其合并回母版。 这就是我一直在做的。 然而,我小组的其他成员没有分支。 他们从github上的主机拉到本地机器,进行编辑,在本地主机上完成功能,然后推送到github上的主机 我试图说服他们加入分支机构,但现在我想了想,我发现这更令人困惑。 有人告诉我,分支的目的是复制代码,而不必担心意外地放入无法命名的代码会破坏主程序 但他们当地的主人真的就跟树枝

我在上第一节软件工程课。 这是我们第一次在团队中使用git和github。 在课堂上,我们的老师告诉我们,你通常应该从母版分支,在你完成新功能后,将其合并回母版。 这就是我一直在做的。 然而,我小组的其他成员没有分支。 他们从github上的主机拉到本地机器,进行编辑,在本地主机上完成功能,然后推送到github上的主机

我试图说服他们加入分支机构,但现在我想了想,我发现这更令人困惑。 有人告诉我,分支的目的是复制代码,而不必担心意外地放入无法命名的代码会破坏主程序

但他们当地的主人真的就跟树枝一样吗?在进行编辑时,他们不会更改github上的主控程序,因此其他人可以自由地从github中提取工作代码。然后它们合并,类似于分支

我很困惑,如果他们所做的似乎是有效的,我们为什么要分支

谢谢

但他们当地的主人真的就跟树枝一样吗

是的

我很困惑,如果他们所做的似乎是有效的,我们为什么要分支

这取决于您的工作流程。您所描述的似乎是此工作流:

Alice创建一个分支
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
它们是其他命令,您可以使用g
it branch-r
查看远程分支


您可以通过操纵到此位置来检查本地分支创建的引用
refs/remotes/origin

在实际项目中,人们在功能上进行协作,团队成员在代码合并之前查看其他人的代码,人们同时处理不同的功能或修复程序,功能可能会持续很长时间,因此必须保存在开发人员的机器上,等等。所有这些都是通过分支和将分支推送到github实现的。好的,谢谢!我认为我的团队计划一次开发一个功能,并且自己开发。但是现在我可以看到,如果人们在一次处理多个功能时与其他成员协作,那么分支是非常重要的。当你刚开始创建功能分支时,创建功能分支可能显得有些过火,但它们确实很难实现