Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.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 在PR后处理开发分公司的再基地_Git_Github - Fatal编程技术网

Git 在PR后处理开发分公司的再基地

Git 在PR后处理开发分公司的再基地,git,github,Git,Github,我正在进行一个项目的早期阶段,我们每个开发人员有一个开发分支。因此,在实现某些功能时,我们创建一个PR(github)并将其合并到master。公关结束后,我想继续与我的开发部门(同一个部门)合作 更新我的开发分支以匹配新主机的正确方法是什么?以及如何在同一分公司的公关后继续与我的发展分公司合作? 我试过站在我的开发分支中使用git rebase master。然后我再次获得提交,因为它们已经从我的分支合并到主节点中(由于PR)。这使得我的发展分支位于我的发展分支的起源之前。这将导致我的开发分支

我正在进行一个项目的早期阶段,我们每个开发人员有一个开发分支。因此,在实现某些功能时,我们创建一个PR(github)并将其合并到master。公关结束后,我想继续与我的开发部门(同一个部门)合作

更新我的开发分支以匹配新主机的正确方法是什么?以及如何在同一分公司的公关后继续与我的发展分公司合作?

我试过站在我的开发分支中使用git rebase master。然后我再次获得提交,因为它们已经从我的分支合并到主节点中(由于PR)。这使得我的发展分支位于我的发展分支的起源之前。这将导致我的开发分支内的合并

有时,如果主分支中包含来自其他用户的一些其他提交,而我已重新设置了基准,并希望创建一个新的PR。他们的提交也会在我的PR中结束。提交它们已合并到master中。我尝试了很多东西,现在我很困惑

因此,我认为正确的是以下工作流程:

<merge PR on github>
git checkout master 
git pull --rebase
git checkout my-dev-branch
git rebase master
<continue working in my-dev-branch>

git签出主机
git-pull——重基
git签出我的开发分支
git重基主控器

然而,这里有些不对劲,因为它会导致奇怪的合并/包含其他用户提交等。

考虑一下这个反问句:在钉子、平头或菲利普斯上使用的正确螺丝刀是什么


更实际一些:git-rebase所做的一切就是复制(一组)提交,然后拖动一个分支名称。也就是说,在
git-rebase
之前,您可能有:

...--F--G--H   <-- master
         \
          I--J--K   <-- feature
只要没有其他人在使用
I-J-K
,这样做是合理的。如果没有其他人有,在任何时候都可以这样做。如果Bob和Carol拥有它们,但没有使用它们,并且您可以说服Bob和Carol在不中断其工作的情况下切换到新的替换承诺,这样做仍然是安全的,但现在您必须与另外两个人协调

在某些情况下,这样做可能是合理的,即使其他人正在使用原始链并依赖它。在这里,他们必须知道如何处理他们的提交,因为现在他们的存储库中有自己的附加提交:

...--F--G--H   <-- master
         \
          I--J--K   <-- feature
                 \
                  L   <-- bob
这一系列的提交可以简单地添加到现有的提交上,方法是将名称
master
向下滑动,并在Git所称的快进操作中向右滑动:

...--F--G--H
            \
             I--J--K   <-- feature, master
没有人(包括你自己)会记得原始
I-J-K
链的散列ID,当你最终在
K'
之后提交
L
时,“感觉”你只是在继续你离开的地方:

...--F--G--H--I'-J'-K'  <-- feature, master
...--F--G--H--I'-J'-K'  <-- master
                     \
                      L   <-- feature

…--F--G--H--I'-J'-K'实际上,我建议在功能完成后不要继续使用您的开发分支。为什么要继续使用它?因为它基本上是一个通用的开发分支,可能包含多个特性或更改。所以这不是“featureX”,而是“本周的东西”之类的分支。但是,删除分支并使用相同的名称重新创建是否更好?在项目的后面,有功能分支是有意义的。但不是现在。我不是Git专家,但我很少看到使用您建议的工作流。相反,一旦一个功能完成,分支合并,该分支就不再用于其他工作。是的,我想这是最简单的方法,不会引起任何奇怪的问题。很抱歉让您的注意力回到一个一年前的答案,但我想知道在git世界中,您的反问句的答案是什么。在DIY世界里,答案是锤子。通过阅读您的答案,我认为git world的答案是“删除分支并创建一个新分支”。是吗?@KitJohnson:嗯,“这要看情况了”:-。。。例如,如果你没有锤子,你可以用螺丝刀的背面,不过用金属(扳手?)可能更好。在Git land中,您所说的通常是正确的答案(就像反问句的锤子一样),但可能会有一些奇怪的特殊情况,需要解决其他问题。谢谢。这对我来说是一次非常有益的讨论。
             I'-J'-K'  <-- feature
            /
...--F--G--H   <-- master
            \
             I--J--K   [your PR - abandoned]
...--F--G--H--I'-J'-K'  <-- feature, master
...--F--G--H--I'-J'-K'  <-- master
                     \
                      L   <-- feature
...--F--G--H--IJK   <-- master