我想知道如何在sourcetree中撤消git提交或重命名提交消息。 我用错误的提交消息提交了我的更改。我想撤消该提交,并从图中删除它。 我尝试了反向提交选项,但它在图中显示了另一个提交。
答案 0 :(得分:2)
我现在已成像您尝试使用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
希望这有帮助
答案 1 :(得分:1)
基本上,您正在寻找的功能称为修改,它允许您更改上次提交。这是Sourcetree提供的功能,但由于您已经创建了一个您想要摆脱的反向提交,因此您仍然需要使用命令行“弄脏”。
要摆脱最后一次反向提交,请执行以下操作:
git reset --hard HEAD~1
之后,您可以回到Sourcetree的舒适度并执行以下操作来更改您的orignial commit的消息:
Commit options
- &gt; Amend latest commit
Commit
答案 2 :(得分:0)
“重写历史记录”非常有用的命令:rebase
您需要指定一个参考点(历史记录中的最后一次提交) 它是这样的:
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>