【发布时间】:2018-11-13 00:47:25
【问题描述】:
我想知道如何撤消 git 提交或在 sourcetree 中重命名提交消息。 我使用错误的提交消息提交了我的更改。我想撤消该提交并从图中删除相同的提交。 我尝试了反向提交选项,但它在图表中显示了另一个提交。
【问题讨论】:
标签: git atlassian-sourcetree git-commit git-revert
我想知道如何撤消 git 提交或在 sourcetree 中重命名提交消息。 我使用错误的提交消息提交了我的更改。我想撤消该提交并从图中删除相同的提交。 我尝试了反向提交选项,但它在图表中显示了另一个提交。
【问题讨论】:
标签: git atlassian-sourcetree git-commit git-revert
我现在正在成像,您尝试使用 git revert 撤消提交,但它以额外的提交结束,这是适合您的解决方案。
使用git log --oneline' 向您显示您的日志,您会找到带有错误消息的提交,除此之外您还会找到它的哈希值(如53fnd3w)复制它然后输入
git reset --hard <paste-the-hash>
这将引导您返回该提交,之后如果您只想更改提交的名称,请使用
git commit --amend -m "New commit message"
这会让你更改最新提交的名称,也就是你所在的那个,但是如果你想撤销这些更改,因为你想将它们分成两个提交或其他东西,使用
git reset HEAD^
这将使您返回当前提交之前的提交,但未提交更改,一旦您进行新提交,它将忽略 HEAD^ 之后的提交,并且您在进行时只会看到新提交
git log --oneline
希望对你有帮助
【讨论】:
HEAD~ 而不是从git log 粘贴哈希值,而不是查找上一次提交的哈希值。
基本上,您正在寻找的功能称为修改,它允许您对上次提交进行更改。这是 Sourcetree 提供的功能,但由于您已经创建了一个想要摆脱的反向提交,您仍然必须使用命令行“弄脏你的手”。
要摆脱最后一次反向提交,请执行以下操作:
git reset --hard HEAD~1
之后,您可以返回到 Sourcetree 并执行以下操作来更改您的原始提交的消息:
Commit options -> Amend latest commit
Commit
【讨论】:
一个非常有用的“重写历史”命令: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>
【讨论】: