如果您在上一次提交中发现了错误,则只需使用
重新提交最后一次提交即可git commit --amend
但是如果您已经提交了另一个提交,那么如何在该提交之前重新提交提交?
注意:我认为,如果您确定没有其他开发人员已使用您的上游提交,那么您应该只使用--amend
答案 0 :(得分:7)
使用
提交修正git commit -a -m "fix commit (this one will be shifted up one line)"
(提交信息并不重要,一旦完成就会过时)
现在魔术:
将HEAD重新绑定到第二个最后一次提交,但在此之前编辑提交消息,在消息编辑器中交换最后一行但最后一行:
git rebase -i HEAD~3
编辑将显示最后3个这样的评论:
pick 2a06f16 this was the last commit pick 0dbc5ce the last-but-one commit pick 2e30418 fix commit (this one will be shifted up one line) # Rebase 011f3d0..2e30418 onto 011f3d0 # …
交换最后两行,因此提交消息将如下所示:
pick 2a06f16 this was the last commit fixup 2e30418 fix commit (this one will be shifted up one line) pick 0dbc5ce the last-but-one commit # Rebase 011f3d0..2e30418 onto 011f3d0 # …
使用
检查日志git log HEAD~3
使用+
推送已更正的提交行,以强制使用
git push origin +branchname
答案 1 :(得分:3)
@aragaer的评论甚至更短的方式:
git commit -a --fixup=HEAD^ #(or whatever commit to be fixed)
然后
git rebase -i HEAD~3
并且您不需要更改任何内容,因此您可以关闭编辑器,git
将自行处理修复。
注意:这不适用于我的Ubuntu系统!
答案 2 :(得分:0)
在git GUI中,您可以轻松实现以下目标:
temp
分支添加到最新提交master
重置为要编辑的提交之前的提交temp
分支中的所有提交一一挑选到master
,并根据需要编辑消息使用+
推送更正后的提交行,以使用
git push origin +master
答案 3 :(得分:0)
好吧,我在搜索该页面时登陆了该页面。找到了许多其他选择的更好方法
git rebase -i HEAD~2
编辑器将打开并显示以下详细信息
pick 4f4f96f Added git ignore
pick d01e18c Added sample Blog
# Rebase 60e1cd3..d01e18c onto 60e1cd3 (2 commands)
#
# Commands:
# p, pick <commit> = use commit
# r, reword <commit> = use commit, but edit the commit message
# e, edit <commit> = use commit, but stop for amending
# s, squash <commit> = use commit, but meld into previous commit
# f, fixup <commit> = like "squash", but discard this commit's log message
# x, exec <command> = run command (the rest of the line) using shell
# b, break = stop here (continue rebase later with 'git rebase --continue')
# d, drop <commit> = remove commit
# l, label <label> = label current HEAD with a name
# t, reset <label> = reset HEAD to a label
# m, merge [-C <commit> | -c <commit>] <label> [# <oneline>]
按i,将pick
更改为r
或reword
,如下所示
pick 4f4f96f Added git ignore
r d01e18c Added sample Blog
按esc + : + wq
将打开另一个窗口,更改提交消息
按esc + : + wq
git push -f