gpt4 book ai didi

git - 使用 Git 将对文件的更改分发到最后一次提交以修改每个文件(fixup last commit that changed the file)

转载 作者:行者123 更新时间:2023-12-04 07:58:54 27 4
gpt4 key购买 nike

git 上是否有一种方法/命令可以将对某些文件所做的更改“分发”到修改每个文件的最后一次提交?

在很多情况下,我注意到已经提交的文件中有一个小的拼写错误(主要是注释:缺少逗号、括号结束、一些小的语法错误...)。我想修复每个文件的最后一次提交以添加小修复。这是否可能无需手动执行提交,运行 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.pytest_feature.py 中的一些小拼写错误

有没有办法说 “将文件 feature.py 上的这些小更改添加到提交 A”“将这些小更改添加到文件 test_feature.py 提交 B"(保持提交顺序 A -> B -> C)

我目前做的是:

  1. 将对 feature.py 的更改添加到提交中,例如 “Fixup Commit A”
  2. 将对 test_feature.py 的更改添加到提交中,例如 “Fixup提交 B”
  3. 运行rebase --interactive
  4. 移动“Fixup...” 在我要修复的提交下方提交(“Fixup Commit A”“Commit A: to add...”“修正commit B" under "Commit B: to test...")
  5. --interactive 编辑器中将它们标记为 fixups

这相当耗时,而且很容易出错。

我已经阅读了其他两个 S.O 问题(Git distribute fixup commit to original commitsgit: squash/fixup earlier commit),但我认为所提议的解决方案并不能完全满足我的要求(也许我错了,但他们的确如此。 ..)

最佳答案

Is that possible without having to manually do a commit, run rebase --interactive, move the commit up, mark it as a fixup of the previous commit...

是的,rebase会为你做这件事。查看其 --autosquash option .

  1. git commit --fixup=<ref> 标记你的提交指向您要修复的提交。 (消息搜索语法非常方便:--fixup=@^{/somewordfromitssubject}。)
  2. 根据需要创建尽可能多的修复提交。
  3. git rebase -i --autosquash theoldestfixedupcommit^ .

关于git - 使用 Git 将对文件的更改分发到最后一次提交以修改每个文件(fixup last commit that changed the file),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66567446/

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