虽然我在所有项目中都使用 git,但偶尔我不得不与不使用 git 的同事协作。他们更喜欢通过电子邮件来回发送他们的压缩资源。这很烦人也很麻烦,但我必须处理它。工作流程如下:
当他们需要我的代码时,我使用 git archive
并向他们发送一个 Zip 文件 export.zip
。我继续工作并提交我所做的更改,而他们使用我过时的资源。插图:
┌ archive & mail
│
A ← B ← C
└───┴── my later changes
一段时间后,他们向我发送了他们的响应文件 import.zip
。 将 Zip 文件导入我的 git 树的最佳方法是什么以及如何实现它?我可以想到以下三个选项,它们在语义上有所不同:
根据他们的变化考虑我后来的变化:
┌ archive & mail │ A ← A' ← B ← C │ └───┴── my later changes │ └─ their changes
在这里,我将 checkout
A
,解压缩import.zip
,提交为A'
,然后重新应用B
和C
(以及后面的内容)。如何将提交重新应用到HEAD
?根据我后来的改动考虑他们的改动:
A ← B ← C ← A'
在这里,我将根据
A
和import.zip
之间的差异创建一个补丁,并将其应用于C
。创建分支并 merge :
A ← B ← C ← M ↖ ↙ A'
在写这个问题的时候,我得出的结论是这个选项是最普遍适用的,也是最稳健的。你同意吗?
我也很感谢关于该工作流程的其他建议。例如,我发现记住我归档的提交 A
既乏味又容易出错。
最佳答案
你是对的,#3 是最好的。我会为每个可能向您发送更改的人创建一个分支。检查他们的分支,解压缩存档,并将更改提交到他们的分支。在某些时候,您可以将您的更改与其更改 merge 在一起,并且 git 会为您指出冲突,这显然不是最佳选择,但考虑到您正在与邮寄 zip 的人打交道,相对来说还可以。当您准备好向他们发送您最近的更改时,我建议将您正在归档的提交标记为“collab-zip-<date>
”或其他内容,并使用一条标记消息“发送更改到 X 因为 Y”。这回答了您关于如何跟踪您发送的内容和时间的最后一点。
关于git - 与不使用 git 的同事协作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26739082/