如何从分支历史记录中删除提交?我应该使用git reset-hard HEAD吗?
当前回答
如果您已经推送,请首先在HEAD($GIT_commit_HASH_HERE)找到您想要的提交,然后运行以下命令:
git reset --hard $GIT_COMMIT_HASH_HERE
git push origin HEAD --force
然后,在复制了回购的每个位置,运行:
git reset --hard origin/master
其他回答
如果您已经推送,请首先在HEAD($GIT_commit_HASH_HERE)找到您想要的提交,然后运行以下命令:
git reset --hard $GIT_COMMIT_HASH_HERE
git push origin HEAD --force
然后,在复制了回购的每个位置,运行:
git reset --hard origin/master
git重置--硬
git推原点HEAD—力
如果一个或多个提交被标记,请首先删除标记。否则,标记的提交不会被删除。
git rebase -i HEAD~2
这里“2”是您要重新设置基准的提交次数。
'git rebase -i HEAD`
如果您想重新设置所有提交的基础。
然后,您可以选择其中一个选项。
p、 pick=使用提交
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
d, drop = remove commit
这些线路可以重新订购;它们是从上到下执行的。如果您删除此处的一行,则承诺将丢失。但是,如果您删除了所有内容,则重新启动将被中止。注意,空提交被注释掉
您只需使用选项“d”或删除包含您提交的行即可删除该提交。
我已经推了。需要远程返回一些提交。尝试了许多变化,但只有Justin via git bush的这句话对我来说很好:
git reset --hard $GIT_COMMIT_HASH_HERE
git push origin HEAD --force
如果您刚刚弄糟了上一次提交(错误的消息,忘记添加一些更改),并想在将其推送到公共回购之前修复它,为什么不使用:
git commit --amend -m "New message here"
如果您有新暂存的更改,它们将与上一次提交(您正在尝试删除)合并,并将替换该提交。
当然,如果你在推送之后修改了一个承诺,你就是在改写历史,所以如果你这样做,一定要理解其中的含义。
如果您希望使用上一次提交的消息,也可以传递“--no edit”选项而不是“-m”。
文件:http://git-scm.com/docs/git-commit.html
推荐文章
- 为什么我需要显式地推一个新分支?
- 如何撤消最后的git添加?
- Rubymine:如何让Git忽略Rubymine创建的.idea文件
- Gitignore二进制文件,没有扩展名
- Git隐藏错误:Git隐藏弹出并最终与合并冲突
- 了解Git和GitHub的基础知识
- 没有。Git目录的Git克隆
- Git与Mercurial仓库的互操作性
- 忽略git中修改(但未提交)的文件?
- “git restore”命令是什么?“git restore”和“git reset”之间有什么区别?
- Git合并与强制覆盖
- Git拉另一个分支
- 在Bash命令提示符上添加git分支
- 如何更改Git日志日期格式
- git pull -rebase和git pull -ff-only之间的区别