git应用补丁并忽略历史记录?

时间:2016-09-05 10:03:20

标签: git diff patch

我喜欢对我的项目应用一些更改,以帮助我的偏心工作流程(例如,我进行一些项目结构更改,删除一些过多的日志记录行等),但我不希望更改出现在我的当我创建一个合并分支时的git历史。手动重写历史记录的努力对于我必须执行此操作的次数来说太多了。

有没有办法应用差异文件(例如从format-diff生成),以便在磁盘上编辑文件,但历史记录和索引没有注意到差异?

我能想到的唯一黑客就是将{gid .diff文件与patch一起应用,并将文件添加到git update-index --assume-unchanged foo/bar但是有更好的 - 更多" git& #34; - 方式?

1 个答案:

答案 0 :(得分:-1)

  

手动重写历史记录的努力数量太多了   我必须这样做。

但这根本不是任何工作。只需要一点点纪律,这实际上可以是半自动化的。

在向最终结果中不应包含的额外调试添加更改时,我所做的是在执行交互式rebase时以非常清晰的方式标记提交消息,例如

pick fdbd12a Mininmal main.c
pick 21e3d6f hello world with arg support
pick a62ebac ========= DEBUG: print argc ========
pick 3160605 Use EXIT_SUCCESS
pick 0ec0ac6 constify message

(有关详细说明,请参阅this answer。)

要删除vi编辑器过滤器中的非最终提交 与"!grep -v ======="并没有精神上的努力 需要 1 。所以你只需要有点自律,并以明显的方式标记提交消息。

使用这种方法,您可以继续处理一个分支,并在开发时包含所有调试/最终排除更改。顺便说一下,这个分支可以没有任何额外的麻烦。

1 排除提交可能会触发合并冲突,在这种情况下I recommend使用KDiff3来解决它们。