当前位置:  开发笔记 > 开发工具 > 正文

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

如何解决《合并来自git存储库外部的更改》经验,为你挑选了1个好方法。

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

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

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

谢谢!



1> VonC..:

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

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

在单独的目录中解压缩

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


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

类型

尺寸

blob的内容

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

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

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

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

推荐阅读
N个小灰流_701
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有