进行以下微不足道的提交
# define function in one file
echo "function foo () {}" > a
git add a
git commit -m "1st commit"
# call the function in different file
echo "foo()" > b
git add b
git commit -m "2nd commit"
# rename foo to bar in both files
echo "function bar () {}" > a
echo "bar()" > b
git commit -am "fixup"
是否可以自动拆分修复提交以更新以前的提交?
我认为如果fixup commit只更改了原始提交中更改的行,那么确实可以通过算法精确地拆分fixup提交。是这样的吗?如果是这样,git是否支持它?
我知道可以使用多个rebase并手动拆分fixup提交,但这不是我之后的事。
澄清:想象一下在功能分支上工作。你有很多提交。在代码审查时,发现例如方法foo
应该命名为方法bar
。现在,在推送到上游之前,我不仅要更改它的所有实例,而是添加新的提交,但拆分最后一次提交并将其应用于相应的先前提交。
答案 0 :(得分:1)
如果我将您的问题解释为“我如何在其出现的所有提交中重命名函数”,那么以下工作(针对您提供的两个示例提交进行测试,但不打算完全正常运行)。
在处理功能分支时,您需要将其传递给限制filter-branch尝试处理的提交数量。
git filter-branch --tree-filter 'git grep --name-only foo | xargs sed -i "s/foo/bar/g"'