与不使用git的同事协作

时间:2014-11-04 15:37:35

标签: git

虽然我在所有项目中使用git,但有时候,我必须与不使用git的同事合作。他们喜欢来回发送他们的压缩源。这很麻烦,很麻烦,但我必须处理它。工作流程如下:

当他们需要我的代码时,我会使用git archive并向他们发送一个Zip文件export.zip。我继续工作并提交我做的更改,而他们使用我过时的来源。插图:

   ┌ archive & mail
   │
   A ← B ← C
       └───┴── my later changes

一段时间后,他们将回复文件发送给我import.zip将Zip文件导入我的git树以及如何实现它的最佳方法是什么?我可以想到以下三个选项,它们在语义上有所不同:

  1. 根据他们的更改考虑我以后的更改:

       ┌ archive & mail
       │
       A ← A' ← B ← C
           │    └───┴── my later changes
           │  
           └─ their changes
    

    在这里,我会结帐A,解压缩import.zip,提交为A',然后重新申请BC(以及随后的内容)。如何重新申请提交至HEAD

  2. 根据我后来的更改来考虑他们的更改:

    A ← B ← C ← A'
    

    在这里,我将基于Aimport.zip之间的差异创建补丁,并将其应用于C

  3. 创建分支并合并:

    A ← B ← C ← M
       ↖     ↙
          A'
    

    在写这个问题时,我得出结论,这个选项是最普遍适用的,也是最强大的。你同意吗?

  4. 我也非常感谢有关该工作流程的其他建议。例如,我发现记住我存档的提交A很乏味且容易出错。

3 个答案:

答案 0 :(得分:3)

你是对的,#3是最好的。我会为每个可能发送更改的人创建一个分支。签出他们的分支,解压缩归档,并将更改提交到他们的分支。在某些时候,你可以将你的更改和他们的更改合并在一起,git会指出你的冲突,这显然不是最佳的,但考虑到你正在处理邮件拉链周围的人,相对正常。当您准备好向他们发送最近的更改时,我建议您将正在归档的提交标记为&#34; collab-zip-<date>&#34;或其他东西,带有标记消息,表示&#34;发送更改为X,因为Y&#34;。这回答了你关于如何跟踪你发送的内容的最后一点。

答案 1 :(得分:1)

  

我发现记住我存档的提交A很乏味且容易出错。

建立一个export分支,并在另一个分支上开展工作。只要您准备好发送给同事,您就可以将最新版本合并到export并归档。我建议将它与选项#3结合使用。

而且你也忘了选项#4:说服你的同事使用Git提供帮助他们设置并开始使用它。教一个人钓鱼等等。

答案 2 :(得分:1)

正如其他人已经指出的那样,#3是第二好的*解决方案。它与使用Git的时间大致相同,只有这样你才能合并远程分支而不是本地分支,并且它们可能有多个提交而不是一个。

你当然可以根据他们的更改(根据你的第一个选项)重新提交你的提交,但是那时你将重写历史记录,这将引入许多其他问题。

我真的不建议使用手动补丁(选项#2)。 Git有一个非常好的merge工具,专为这些情况而设计。

*:最好的解决方案仍然是说服你的同事开始使用Git。现在,由于他们的偏好,您需要花费大量的时间和精力。如果他们不愿意听你的话,只需和你的老板谈谈,并告诉他你因为他们的固执而浪费了很多时间,并且它带来了更高的引入漏洞的风险,并且(我想你可以拿出一些更多的论据来说服他节省一些钱)。