如何重命名已推送到GitHub的Git提交?

67

我不小心将一个非常糟糕的提交名称的代码提交到了GitHub上。我该如何更改?

git commit --amend 命令对已经推送的提交是否仍然有效?


使用 git commit --amend 然后跟着 git push --force - vanza
2
我不建议使用 git push --force。你需要明确地只强制推送必要的内容。例如:git push --force origin specific-branch。你也可以使用 -f 的简写形式。简写形式也可以组合成一个选项。例如:git push -uf origin mybranch - Adam Dymitruk
相关问题 - 如何对第一个提交进行git rebase 和相关文章 - Gangula
2个回答

136
git commit --amend

这将打开您的编辑器,或者

git commit --amend -m "Your new message here"

这将允许您在命令行上指定新消息。如果您有其他需要重新命名的提交,则更实用。

git rebase -i HEAD^
# then replace 'pick' with 'r' or 'reword' and save, editor should pop up again to edit the msg

由于这个提交由于内容的更改具有新的SHA1,因此您需要强制推送新参考。 强制是必需的,因为它告诉Git忘记先前的提交。 这是一种安全措施。

git push origin your-branch-name -f

5
需要记住的是,如果你正在处理一个大型项目,在此之前可能已经有人检出了你要替换的提交,那么他们在其基础上的工作将变得非常难以合并。 - Robert Rouhani
1
如果你正在重命名东西,那很简单。他们只需要执行 git fetchgit rebase origin/master(假设他们正在主分支上工作)。没有冲突,因为没有快照被改变。 - Adam Dymitruk
7
如果这不是最后一次提交,会怎样? - anilbey
@anilbey 我也有同样的问题。你找到解决办法了吗? - Olle Härstedt
git rebase -i有一个reword选项可以实现这个功能。 - anilbey

0

如果需要更改已经推送的提交,请执行以下操作

git reset --soft HEAD~1
git add .
git commit -m "custom message"
git push -u -f origin master

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接