我在承诺信中写错了。

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


当前回答

更改最新承诺消息

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 rebase -i HEAD~5

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

pick <commit hash> commit message

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

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

使用

git commit --amend

要详细理解,一个很好的帖子是 4. 重新写 Git 历史. 它也谈论什么时候不使用 git commit --amend。

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

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

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

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

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

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

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 是重写最后一份重写的方式。

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