【问题标题】:GIT Staging Environment workflow - MergingGIT 暂存环境工作流程 - 合并
【发布时间】:2014-06-11 19:42:14
【问题描述】:

我有一个名为“Develop”的远程分支,每个新开发人员都应该克隆这个分支并在完成后将更改推送到它,在服务器上我看到推送后的两个分支是来自开发人员的新分支和原点/发展 。

所以我每次都必须将新分支合并到开发分支。实际上我是 git 的新手,我想知道是否有更好的方法来做到这一点。

提前致谢

【问题讨论】:

  • 这很不清楚:“在服务器上,我在推送后看到的是两个分支,来自开发人员的新分支和原始/开发”。你能澄清一下吗?开发人员是在他们自己的机器上工作,还是直接在您的登台服务器上工作?
  • 他们正在他们的机器上工作,假设一个新开发人员创建了一个名为“local”的本地分支,在将本地分支推送到远程仓库后,我得到本地并开发,所以我必须合并它们每次都要有开发商的改动。现在清楚了吗?
  • 是的,我想是的。我在下面添加了一个答案。

标签: git github git-branch git-merge


【解决方案1】:

可以将本地分支推送到任意远程分支。要将名为 foobar 的本地分支推送到名为 origin 的远程分支上的分支 develop,开发人员可以运行

git push origin foobar:develop

来自the documentation for git push

概要

git push ... [<repository> [<refspec>...]]

稍后我们会看到&lt;refspec&gt; 是什么:

&lt;refspec&gt;...

使用源对象指定要更新的目标引用。 &lt;refspec&gt; 参数的格式是可选的加上+,后跟源对象&lt;src&gt;,后跟冒号:,后跟目标引用&lt;dst&gt;

&lt;src&gt; 通常是您要推送的分支的名称,但它可以是任意“SHA-1 表达式”,例如master~4HEAD(请参阅gitrevisions(7))。

&lt;dst&gt; 告诉远程端的哪个 ref 被此推送更新。此处不能使用任意表达式,必须命名实际的 ref。如果 git push [&lt;repository&gt;] 没有任何 &lt;refspec&gt; 参数设置为使用 &lt;src&gt;remote.&lt;repository&gt;.push 配置变量更新目标处的某些引用,则可以省略 :&lt;dst&gt; 部分——这样的推送将更新 @987654345 的引用@ 通常在命令行上没有任何 &lt;refspec&gt; 的情况下更新。否则,缺少:&lt;dst&gt; 意味着更新与&lt;src&gt; 相同的引用。

【讨论】:

  • 谢谢你的解释:)
  • 典型的做法是让合并的人与推动他们自己的开发分支的开发人员分开。否则,开发人员可能会相互冲突,并反复尝试将冲突的更改直接推送到共享分支。使用最适合您的任何流程,但是所描述的这个答案基本上消除了任何关于合并被批准的回购意识。因此,如果您遇到开发人员冲突,解开这个结就会变得更加困难。
  • @JoeAtzberger,关于合并的要点。这个答案显示了如何推送到一个不同命名的远程分支,仅此而已。开发人员应定期从origin:developfetch 并将这些更改合并到他们自己的中。但这与在 any 共享分支中工作没有什么不同。根据我假设的名称(可能是错误的)develop 分支将由更高级的团队成员(可能是 OP)审查并定期合并到另一个分支 (master?)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-09-04
  • 1970-01-01
  • 2012-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多