合并来自git存储库外部的更改

Dou*_*oug 2 git version-control

我正在与该国另一方的另一位开发人员合作,他们是我们项目的负责人,并且没有使用正式的版本控制系统.在我的结尾,我正在跟踪git中的所有代码.我最近开始为主项目做贡献,并希望能够跟踪其他开发人员的更新.

当我收到他更新的代码时,通常采用zip文件的形式.如果我只是将文件解压缩到我的git工作文件夹中,git认为每个文件都已更改,大概是因为统计信息已更改.

我希望看到的是一种方法,我可以将新代码与我的工作副本一起解压缩,并仅合并更改.最好的方法是什么?由于它是Powerbuilder项目,因此大多数文件都是二进制文件.

谢谢!

Von*_*onC 7

如果存储在Git中,二进制文件必然会创建一个新版本(即在下一次提交时要考虑).
所以:你需要那些二进制文件,还是可以重建它们?

至于消息来源,在Git中,SHA1是王者,而且因为文件的日期(时间戳)涉及其计算,因为外部文件集的内容可能相当不同(更多文件,临时文件,应该忽略的文件,......),最好:

  • 在单独的目录中解压缩
  • 使用像WinMerge这样的工具来检测基于内容的更改,合并它们,然后只提交实际演变的文件.
    您只需比较两组目录和文件:您解压缩远程同事开发的目录和文件,以及您当前正在工作的目录和文件.

感谢rq指出时间戳不是SHA1计算的一部分.只有:

  • 类型
  • 尺寸
  • blob的内容

SHA1计算的一部分:替代文字
(来源:alexgirard.com)

但是,当将外部管理的大量文件导入到git存储库时,您可能会冒险将新文件添加到git管理的目录中,更改其内容,从而更改其SHA1密钥,即使旧的git管理文件未更改.
这意味着如果这些新文件只是临时文件或应该忽略/重新创建/重新生成的文件,那么树中的很多更改都是​​人为的.

替代文字
(来源:alexgirard.com)

上面的过程只是确保一种外部方法来检测外部文件集和git管理的文件集之间的变化,并判断它是否必须是git工作目录的一部分.