git - 与不使用 git 的同事协作

标签 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
    

    在这里,我将 checkout A,解压缩 import.zip,提交为 A',然后重新应用 BC(以及后面的内容)。如何将提交重新应用到 HEAD

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

    A ← B ← C ← A'
    

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

  3. 创建分支并 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/

相关文章:

linux - 编写一个 Makefile 以自动获取文件名并创建具有相同名称的相应可执行文件

git - 无法查找 git(不支持 servname)

git add -N 后跟 git stash - "Cannot merge"

python - 无法使用 git 安装私有(private) python 包

svn - 对 git merge 使用单独的提交消息是否更好?

一些提交日期之前的 Git 日志

git - 在开发服务器上测试/预览 Github 分支

node.js - Node.js 中的 “bash read command”

git - 查找推送的大小

git - 您的带指纹 (..) 的 key 未经授权(协作)