我在承诺信中写错了。

我怎么能改變訊息呢?承諾尚未推動。


当前回答

我意识到我已经推着一个承诺与一个类型在其中。为了放弃,我做了以下事情:

git commit --amend -m "T-1000, advanced prototype"
git push --force

警告:强迫推你的变化将重新写下远方分支与你的当地一个. 确保你不会过度写下任何你想保持的东西. 也要小心强迫推一个修改(重新写)承诺,如果其他人与你分享分支,因为他们将需要重新写下自己的历史,如果他们有旧的副本的承诺,你刚刚重新写。

其他回答

如果您需要在多个分支上更改一个旧的承诺消息(即与错误消息的承诺存在于多个分支),您可能需要使用:

git filter-branch -f --msg-filter \
'sed "s/<old message>/<new message>/g"' -- --all

Git 将创建一个临时目录,以重新编写,并在 refs/original/中备份旧参考。

-f 将执行操作,这是必要的,如果临时目录已经存在,或者如果已经有参考存储在 refs/original 下,如果不是这样,你可以放下这个旗帜. -- 将过滤分支选项与审查选项分开。

由于您的旧参考备份,您可以在执行命令之前轻松地返回状态。

说,你想恢复你的主人,并在分支 old_master 中访问它:

git checkout -b old_master refs/original/refs/heads/master

我意识到我已经推着一个承诺与一个类型在其中。为了放弃,我做了以下事情:

git commit --amend -m "T-1000, advanced prototype"
git push --force

警告:强迫推你的变化将重新写下远方分支与你的当地一个. 确保你不会过度写下任何你想保持的东西. 也要小心强迫推一个修改(重新写)承诺,如果其他人与你分享分支,因为他们将需要重新写下自己的历史,如果他们有旧的副本的承诺,你刚刚重新写。

如果你只想修改你的最后一个承诺消息,那么做: git commit --amend

它会把你推到你的文本编辑器,让你改变最后的承诺消息。

如果您想更改前三個承諾訊息,或任何承諾訊息到這一點,請將 HEAD~3 傳送到 git rebase -i 命令: git rebase -i HEAD~3

您可以使用 Git 重定向. 例如,如果您想要修改回来承诺 bbc643cd,运行

$ git rebase bbc643cd^ --interactive

在默认编辑器中,修改“选择”到“编辑”的行,您想要修改的承诺。

$ git add <filepattern>

现在你可以使用

$ git commit --amend

要改變承諾,然後

$ git rebase --continue

要回到前任首席执行官。

啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊

另一种方法是删除最后的承诺,但保持它的变化,这样你就不会失去你的工作。

git reset --soft HEAD~1
git commit -m 'New and corrected commit message'

我总是这样做,如果我忘记添加文件或做出更改。

请记住指定 - 软而不是 - 硬,否则你会失去这个承诺完全。