繁体   English   中英

如何在省略新文件的同时更改git仓库中的文件

[英]How to get changes to files in a git repo while omitting new files

我有一个git repo,其中包含一个文件夹,其中包含自动生成的源代码文件。 加班,对该代码进行了一些轻微的手动修改。 我现在处于需要重新生成文件的位置,但我不想错过任何更改。

我想做的是随着时间的推移获得对该文件夹所做的所有更改的差异,但是要排除每个文件的原始“添加”。 这样我就可以将diff应用于新的文件集。

还有一个更重要的细节:并非所有文件都是同时添加的。 添加内容与编辑混合在一起。 所以它并不像从特定提交开始生成diff那么简单。

有任何想法吗?

更多背景:

  • 自动生成的文件是从WSDL文件生成的SOAP代理类
  • 我们正在处理多个服务,因此在需要时添加了类。
  • 我们收到了一个更新的服务器虚拟机,其中包含一些包含小修复的WSDL
  • 用于生成代理类的工具有一些不完整的实现,因此对这些文件所做的更改是解决方法

种子:

  • 有没有办法知道第一次提交文件的SHA? 我觉得有一个git loggrepsed味道?
  • 也许得到一个特定文件的提交计数,其中1 ==没有更改只有插入,我可以grep那些?

修改回答:

您将需要一些脚本来遍历该目录并使用每个文件获取初始提交
git log --format=%H fileName | tail -1

而不是获得差异:
git diff ^output_of_above SHA_last_commit fileName

我假设您仍然拥有WSDL的旧副本,是一个很好的源代码控制用户和所有。 考虑到这一点,我会做以下事情:

  • 在添加任何相关文件之前,创建并签出新分支。
  • 使用旧的WSDL和提交生成类。
  • 使用新的WSDL和提交生成类。
  • Checkout master并合并新的分支。

这将合并自动生成的文件与手动调整的差异。

保持该分支,以便每次WSDL更改时,您可以检查该分支并重复最后两个步骤。 基本上,该分支应始终只包含自动生成的文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM