gpt4 book ai didi

c++ - git patch忽略空白差异c++

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:20:13 25 4
gpt4 key购买 nike

我唯一关心的是 C++ 文件。 (不要担心二进制文件、文本等……您可以假设一切都是 C++ 代码_)。

我有这些分支:

* dev
master

现在,我可以创建一个新分支“magic”,其中分支 magic 等同于“dev”(就生成的 C++ 代码而言),但最大限度地减少了来自 master 的无用白行差异(如插入额外的换行符)。

这可能吗?

谢谢!

最佳答案

你的问题对我来说不是很清楚。我认为您希望新分支包含一系列与 dev 中的提交“等效”的提交,但不包含不必要的空白更改。

最简单的方法是使用 git rebase --interactive。这允许您手动编辑一系列提交。您可以使用 git rev-list HEAD | 获取第一个(“root”)提交的哈希值尾-n 1。如果您还想编辑第一个提交,那就更难了,但是有一个 SO 答案。

git checkout dev
git checkout -b magic
git rebase --interactive $(git rev-list HEAD | tail -n 1)

这会在按时间顺序排列的提交列表中显示一个编辑器。您将 pick 更改为 edit 您希望更改的提交。然后 git 将在处理每个提交之前暂停,允许您使用 git commit --amend 修改它,然后使用 git rebase --continue 继续 rebase 。您当然可以运行脚本来清理文件而不是手动编辑它们。如果你想根据与之前提交的差异来执行此操作,你需要使用类似 git cat-file blob HEAD^:filename 的东西来获取之前的修订版,或者使用 git diff HEAD^ 文件名.

如果你想自动化整个过程,那么你可以使用 git filter-branch --tree-filter script。有关详细信息,请查看 git-filter-branch 的手册页。

如果你想防止 future 的提交包含空白错误,你可以设置一个预提交 hook禁止他们。

一旦您对新分支 magic 感到满意,您就可以用它来替换 dev:

git branch -m dev dev-old
git branch -m magic dev

但是,请注意,这可能会给那些在自己的存储库中已经拥有 dev 拷贝的人带来问题。最好进行 merge 。

关于c++ - git patch忽略空白差异c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2825406/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com