在 sourcetree 中重命名提交消息/撤消提交并从图中删除

Rename commit mesage / Undo commit in sourcetree and remove from graph

我想知道如何撤消 git 提交或重命名 sourcetree 中的提交消息。 我使用错误的提交消息提交了我的更改。我想撤消该提交并从图中删除它。 我尝试了反向提交选项,但它在图中显示了另一个提交。

我现在正在想象您尝试使用 git revert 来撤消提交,但它最终会导致您进行额外的提交,这是适合您的解决方案。 使用 git log --oneline' 向您显示您的日志,您会找到带有错误消息的提交,除此之外您还会找到它的哈希值(如 53fnd3w)复制它然后键入

git reset --hard <paste-the-hash>

这将引导您返回到该提交,之后如果您只想更改提交的名称,请使用

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

这会让你更改最新提交的名称,也就是你所在的那个,但是如果你想撤消这些更改,因为你想将它们分成两个提交或其他东西,请使用

git reset HEAD^

这将 return 您返回当前提交的前一个提交,但未提交更改,一旦您进行新提交,它将忽略 HEAD^ 之后的提交,您将当你做

时只看到新的提交

git log --oneline

希望对您有所帮助

基本上,您正在寻找的功能称为修改,它允许您对上次提交进行更改。这是 Sourcetree 提供的功能,但由于您已经创建了一个要删除的反向提交,因此您仍然必须使用命令行 "get your hands dirty"。

要删除最后一次反向提交,请执行以下操作:

git reset --hard HEAD~1

之后,您可以 return 舒适地使用 Sourcetree 并执行以下操作来更改原始提交的消息:

  1. 转到您的工作副本
  2. 在右下角选择 Commit options -> Amend latest commit
  3. 编辑您的提交信息并点击 Commit

"rewrite history" 的一个非常有用的命令:rebase

您需要指定一个参考点(历史上最后一次 Ok 提交) 它是这样的:

git rebase -i <reference point sha/tag/branch>

这会将您带到提交列表并允许您修改它们 有以下选择

#Commands:
#  p, pick = use commit
#  r, reword = use commit, but edit the commit message
#  e, edit = use commit, but stop for amending
#  s, squash = use commit, but meld into previous commit
#  f, fixup = like "squash", but discard this commit's log message
#  x, exec = run command (the rest of the line) using shell

我认为 'r' 是您正在寻找的,但您可以看到它更强大。 git doc on rewriting history.

在此之后您将需要强制推送以更新您的远程服务器

git push -f <remote> <branch>