如何在特定提交上将修订的提交推送到远程git repo

cra*_*ken 2 git github git-amend git-commit

我已经在我的仓库中编辑了一些文件并将其推送。
在完成其他一些工作之后,我注意到我在一行中发表了评论。
因此,我不想为其创建一个新的提交,而我想在上一个提交中更改它(而不是最后一个提交)。
我认为我可以使用提交ID,但是我不知道Git怎么会容忍此功能。

Tim*_*sen 5

您可以在交互模式下进行变基:

git rebase -i HEAD~10
Run Code Online (Sandbox Code Playgroud)

Git会提示您一个提交列表,最早的显示在最前面:

...
pick ab89k22 Old commit
pick ml9826x Another old commit
pick xke82ml This is the commit you want to edit
pick aow82md Here is your latest commit
Run Code Online (Sandbox Code Playgroud)

找到您要编辑的提交,然后更改pickedit

edit xke82ml This is the commit you want to edit
Run Code Online (Sandbox Code Playgroud)

然后保存文件并退出。Git现在将开始重新设置基准,并将在您要编辑的提交处停止,从而允许您进行更改。完成更改后,您可以输入

git add path/to/file
Run Code Online (Sandbox Code Playgroud)

对于您修改的每个文件,然后键入

git rebase --continue
Run Code Online (Sandbox Code Playgroud)

完成变基。

请注意,在本地分支上编辑此提交时,您已经有效地重写了历史记录。这意味着,当你推到远程,你将不得不迫使分支出来,用--force你的git push命令:

git push origin master --force
Run Code Online (Sandbox Code Playgroud)

请注意,重写远程历史记录可能很危险,这取决于谁也与您共享此分支。

如果你希望改写历史偏远,然后一个更安全的赌注将增加一个新的承诺,您的分支。您也可以使用删除有问题的提交git revert,然后添加要保留的更改。