我在承诺信中写错了。

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


当前回答

对于任何正在寻找一个Windows/Mac GUI来帮助编辑旧消息(即不仅仅是最新消息),我会推荐Sourcetree。

此分類上一篇

对于尚未推到远程的承诺:

在“Log/History”选项卡中,右键单击您要编辑的承诺(s)下图中的附属线的输入,并选择“Rebase children of <commit ref> interactively..." 选择您要更改的承诺消息的整个行。

...或......对于已经推出的承诺:

遵循这个答案中的步骤,这些类似于上面的,但需要一个进一步的命令运行从命令线(git push 起源 <branch> -f) 强迫推分。

其他回答

更改最新承诺消息

git commit --amend

git commit --amend -m "New commit message"

...任何人,这可能会使多线承诺消息或小纠正更有吸引力进入。

确保您在做此之前没有任何工作复制变更,或者它们也会被承诺(未进行的变更不会被承诺)。

git push <remote> <branch> --force
# Or
git push <remote> <branch> -f


// n is the number of commits up to the last commit you want to be able to edit
git rebase -i HEAD~n

一旦你错过了你的承诺,选择e/r来编辑消息:

如果你使用 git rebase -i HEAD~n 可以有更多的 n 命令. Git 将“收集”最后 n 命令中的所有命令,如果在这个范围之间有某个合并,你会看到所有的命令,所以结果将是 n + 。

好提示:


git-commit(1) 手动 页 git-rebase(1) 手动 页 git-push(1) 手动 页

如果您正在使用 Git GUI 工具,则有一个按钮称为 修改最后的承诺. 点击该按钮,然后它将显示您的最后的承诺文件和消息. 只需编辑该消息,您可以承诺它一个新的承诺消息。

或使用此命令从控制台/终端:

git commit -a --amend -m "My new commit message"

git rebase -i HEAD~5

这个命令会带你到Vim,你可以“编辑”你的承诺历史,你会看到你的最后五个承诺在顶部如下:

pick <commit hash> commit message

然后Vim将通过你想要重新编写的每一个承诺消息,在这里你实际上可以改变承诺消息,你将通过进入插入模式,改变承诺消息,进入命令模式,并保存和停止。

然后,如果你已经推了你的错误的命令,你需要 git push - 强迫过写它们. 记住, git push - 强迫是相当危险的事情,所以确保没有人从服务器,因为你推了你的错误的命令!

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

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 -o -m "New commit message"

这确保你不会偶然提高你的承诺与步行物品. 当然,最好有一个合适的 $EDITOR 配置. 然后你可以放弃 -m 选项, Git 将提前填写承诺消息与旧的。