从本地后面的远程Git仓库中删除提交

时间:2013-11-06 15:16:09

标签: git git-commit

我在Git中有四个未提交的提交,一个在前面,三个在后面。我想将远程提交推送到远程并从远程分支中删除其他提交。我怎么能这样做?

2 个答案:

答案 0 :(得分:2)

对于历史记录一致性,不建议删除提交已存在于存储库中。特别是如果有多个用户。正确的方法是在单独的分支中恢复不需要的提交,将revert-commit推送到存储库,而不是使用存储库分支和推送结果进行提前提交的merge / rebase分支。以下是命令示例(您需要根据需要对其进行修改):

git branch revert-commits origin/yourremotebranch
git checkout revert-commits
# check hashes of needed commits
git log --oneline
# revert them in reverse order
git revert 473f879
git revert 473f878
git revert 473f877
git push
# checkout to branch with ahead-commit
git checkout ahead-commit
# rebase reverts in ahead-commit branch to resolve possible conflicts
git pull --rebase origin yourremotebranch
git push
# delete unneeded revert-commits branch
git branch -D revert-commits

答案 1 :(得分:1)

提交和分支的日志会有所帮助(例如git log --graph --decorate --pretty=oneline --abbrev-commit --all),以便了解您想要做什么。

但是考虑到git中的提交就像是一个“依赖链”,并且想知道你想做什么,最简单的方法可能就是从你上次同步的点开始创建一个新的分支,只需选择提交你想要的东西并使用它(如果你正在推动分支,这适用于github)。

在此之后,如果你直接在master中工作,你将删除你不想要的提交,然后合并回以前创建的分支。

但是,我只是猜测你发布的信息。