研究环境中的Git工作流程

3

在学术研究中,我仍然没有找到适合我们项目的良好Git工作流程。

设置: 我们将主要项目保留在master分支中。当新想法出现时,会创建一个新的分支来支持研究。通常有几个平行的研究项目由不同的人驱动。

当我在研究分支R上工作时(可能需要数月时间和许多提交),我的一些提交与研究并没有直接联系,而是改进了项目本身... 我希望将这些提交推送到master分支上(它们对其他人可能有所帮助)。

我该怎么做?挑选?在我看来,经过很多次挑选(来自更多的人和不同的分支),最终将难以将分支R与master合并。

也许更好的选择是在提交之前切换到master,进行提交,然后切换回来并从master拉取更新。但这似乎很困难,原因如下:

  1. 切换到master并不容易,因为许多文件没有提交,在冲突等方面(我需要以某种方式使用stash)
  2. 有时候我后来意识到,我应该从R推送旧的提交到master。
  3. 有时候我不想从其他人那里获取master的其他更新。它们以后会有用,但我现在没有时间处理它们。

正确的做法是什么?

1个回答

1
您可以考虑以下方法:
  • (在分支R上)git rebase --interactive:重新排序提交,将您想要的提交放在master上,然后是特定于R的提交。
  • (在master分支上)merge SHA1(最后一个提交的正确SHA1值,您希望它出现在master上)。
但这将更改R分支的历史记录,如果其他人也克隆了该分支,则可能会有问题(您需要清楚地传达这一事件,并要求他们将其R分支重置为您已更改的新分支并推送)。

@Andrej 不,重新排序你的提交是一种常见的 Git 实践,只要那些可能克隆了该分支的其他人知道了这种重新排序。 - VonC

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