我在承诺信中写错了。

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


当前回答

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

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

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

其他回答

如果你只是想编辑最新的承诺,使用:

git commit --amend

git commit --amend -m 'one line message'

但是,如果你想连续编辑多个命令,你应该使用重定向,而不是:

git rebase -i <hash of one commit before the wrong commit>

此分類上一篇

在文件中,如上面的文件中,输入编辑或其他选项之一,然后点击保存和输出。

现在你将处于第一个错误的承诺,在文件中进行更改,它们将自动为你排列。

git commit --amend

保存和输出这个和类型

git rebase --continue

移动到下一个选择,直到完成所有的选择。

请注意,这些事情在这个特殊的承诺之后改变了您的所有SHA<unk>。

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

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

我添加了 Aliases reci 和 recm for recommit (amend) 它. 现在我可以用 git recm 或 git recm -m:

$ vim ~/.gitconfig

[alias]

    ......
    cm = commit
    reci = commit --amend
    recm = commit --amend
    ......

更新您的最后一个错误的承诺消息与新的承诺消息在一个行:

git commit --amend -m "your new commit message"

或者,尝试 Git 重新设置如下:

# You can reset your head to n number of commit
# NOT a good idea for changing last commit message,
# but you can get an idea to split commit into multiple commits
git reset --soft HEAD^

# It will reset you last commit. Now, you
# can re-commit it with new commit message.

使用重新设置将命令分成较小的命令

git 重新设置可以帮助您将一个承诺分成多个承诺:

# Reset your head. I am resetting to last commits:
git reset --soft HEAD^
# (You can reset multiple commit by doing HEAD~2(no. of commits)

# Now, reset your head for splitting it to multiple commits
git reset HEAD

# Add and commit your files separately to make multiple commits: e.g
git add app/
git commit -m "add all files in app directory"

git add config/
git commit -m "add all files in config directory"

在这里,你成功地将最后的承诺分成两项承诺。

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

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

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