【问题标题】:Rename commit mesage / Undo commit in sourcetree and remove from graph重命名提交消息/撤消源树中的提交并从图中删除
【发布时间】:2018-11-13 00:47:25
【问题描述】:

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

【问题讨论】:

标签: git atlassian-sourcetree git-commit git-revert


【解决方案1】:

我现在正在成像,您尝试使用 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 粘贴哈希值,而不是查找上一次提交的哈希值。
  • 你的回答很有帮助..谢谢@Code-Apprentice
【解决方案2】:

基本上,您正在寻找的功能称为修改,它允许您对上次提交进行更改。这是 Sourcetree 提供的功能,但由于您已经创建了一个想要摆脱的反向提交,您仍然必须使用命令行“弄脏你的手”。

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

git reset --hard HEAD~1

之后,您可以返回到 Sourcetree 并执行以下操作来更改您的原始提交的消息:

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

【讨论】:

    【解决方案3】:

    一个非常有用的“重写历史”命令: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>
    

    【讨论】:

    • 感谢您的回答@jo_
    猜你喜欢
    • 2016-12-16
    • 2010-12-19
    • 2017-06-16
    • 1970-01-01
    • 2015-05-29
    • 1970-01-01
    • 2021-05-01
    • 2019-07-12
    • 2016-01-11
    相关资源
    最近更新 更多