git补丁忽略空白差异c++; 我唯一关心的是C++文件。(不要担心二进制文件、文本等……你可以假设所有的东西都是C++代码)。
我有以下分支机构:git补丁忽略空白差异c++; 我唯一关心的是C++文件。(不要担心二进制文件、文本等……你可以假设所有的东西都是C++代码)。,c++,git,C++,Git,我有以下分支机构: * dev master 现在,我可以创建一个新的分支“魔术”,其中分支魔法等同于“DEV”(以C++代码生成),但最小化无用的白线差异(如插入额外的换行符)。 这可能吗 谢谢 git diff--忽略空间更改…您可以尝试设置一个将: 仅当当前分支是魔术时才执行任何操作 删除*.cpp文件的所有白线 进行新提交(因为后期合并钩子不能直接影响git合并的结果) 你的问题我不太清楚。我认为您希望新分支包含一系列提交,这些提交与dev中的提交“等效”,但不包含不必要的空白更
* dev
master
现在,我可以创建一个新的分支“魔术”,其中分支魔法等同于“DEV”(以C++代码生成),但最小化无用的白线差异(如插入额外的换行符)。
这可能吗
谢谢
git diff--忽略空间更改…
您可以尝试设置一个将:
- 仅当当前分支是魔术时才执行任何操作
- 删除*.cpp文件的所有白线
- 进行新提交(因为
钩子不能直接影响后期合并
的结果)git合并
- 你的问题我不太清楚。我认为您希望新分支包含一系列提交,这些提交与dev中的提交“等效”,但不包含不必要的空白更改
最简单的方法是使用git rebase--interactive。这允许您手动编辑一系列提交。您可以使用
git rev list HEAD | tail-n1
获取第一次(“根”)提交的哈希值。如果您还想编辑第一次提交,这会更加困难,但有一个非常好的答案
git checkout dev
git checkout -b magic
git rebase --interactive $(git rev-list HEAD | tail -n 1)
这将在提交列表中按时间顺序打开一个编辑器。您可以在要更改的提交中将“拾取”更改为“编辑”。然后,git将在处理每个提交之前暂停,允许您使用git commit--amend
对其进行修改,然后使用git rebase--continue
继续重新基础。当然,您可以运行脚本来清理文件,而不是手动编辑它们。如果要基于与上一次提交的差异执行此操作,则需要使用类似于git cat file blob HEAD^:filename
的内容来获取上一次修订,或者使用git diff HEAD^ filename
如果您想自动化整个过程,那么可以使用git filter branch--tree filter script
。查看git筛选器分支的手册页了解详细信息
如果要防止将来的提交包含空格错误,可以设置预提交以禁止它们
一旦您对新的branch magic感到满意,您就可以使用它来替换dev:
但是,请注意,这可能会给那些在自己的回购协议中已经拥有dev副本的人带来问题。然后最好是进行合并。是否需要保留dev中的更改历史记录?
git branch -m dev dev-old
git branch -m magic dev