将对文件的更改分发到上次提交,以使用Git修改每个文件(修复更改文件的上次提交)
git上是否有一种方法/命令可以将对某些文件所做的更改“分发”到最后一次修改每个文件的提交 在很多情况下,我注意到在已经提交的文件中有一个小的拼写错误(主要是注释:缺少逗号、关闭括号、一些小的语法错误…)。我想修复每个文件的最后一次提交,以添加小修复。这是否可能不需要手动执行提交,运行将对文件的更改分发到上次提交,以使用Git修改每个文件(修复更改文件的上次提交),git,rebase,Git,Rebase,git上是否有一种方法/命令可以将对某些文件所做的更改“分发”到最后一次修改每个文件的提交 在很多情况下,我注意到在已经提交的文件中有一个小的拼写错误(主要是注释:缺少逗号、关闭括号、一些小的语法错误…)。我想修复每个文件的最后一次提交,以添加小修复。这是否可能不需要手动执行提交,运行rebase--interactive,向上移动提交,将其标记为上一次提交的fixup 例如:假设我有这种情况: Commit A: to add a new feature. 0xa1b2c3
rebase--interactive
,向上移动提交,将其标记为上一次提交的fixup
例如:假设我有这种情况:
Commit A: to add a new feature. 0xa1b2c3 2021/03/10 00:00:00
|-> last commit that modified file '/home/borrajax/projects/feature.py'
Commit B: to test the feature. 0xd4e5f6 2021/03/10 00:05:00
|-> last commit that modified file '/home/borrajax/projects/test_feature.py'
Commit C: something unrelated. 0x112233 2021/03/10 00:10:00
|-> doesn't alter 'feature.py' or 'test_feature.py'
然后,我在feature.py
和test\u feature.py
有没有一种说法是“在文件feature.py
上添加这些小更改以提交a”和“在文件test\u feature.py
上添加这些小更改以提交B”(保持提交顺序a->B->C)
我现在做的是:
feature.py
上的更改添加到类似“Fixup commit a”的提交中test\u feature.py上的更改添加到类似“Fixup”的提交中
承诺B“
rebase--interactive
--interactive
编辑器中将它们标记为fixups
rebase
将为您执行此操作。看看它
git commit--fixup=
标记您的提交。(消息搜索语法非常方便:--fixup=@^{/somewordfromtsubject}
)git-rebase-i——自动取消最旧的fixedupcommit^
您可以使用git commit--amend编辑上次提交,但我建议您只创建一个新的提交。这是已发布的历史记录还是未发布的历史记录?我不建议修改已出版的历史;如果它是未发布的,我想您会希望在当前开发分支与其上游分支发生分歧时停止。是否正确?如果您在单独的提交中修改了一个文件两次呢?是否确实要始终将修复应用于最新提交?也许它应该不去管这些更改,或者提示您做出决定。@JohnKugelman它还没有发布。事实上,这个想法只会改变“我的”承诺。。。这应该不会有太大问题,因为我肯定(小心地)知道我在其中一个“我的提交”中修改了文件。至于第二个(非常好)问题,是的:对于我目前正在寻找的内容,最新的提交就足够了。我用这种方式做的只是一些小的修正(大部分是评论中的打字错误),所以它是一个非交互式的重基@马特哈哈。我不记得了,但我想它还是会为你列出提货单,它只会先为你做一些繁琐的自动化部分。这太棒了!非常感谢。yvw。顺便说一句,你也可以只提交一个文件,不管是什么阶段,你所追求的那种git-r-dun工作流程也正是git的目标。