我在 Git 中有四个未同步的提交,一个领先,三个落后。我想将前面的提交推送到远程并从远程分支中删除其他提交。我怎样才能做到这一点?
问问题
790 次
2 回答
2
为了历史一致性,不建议删除存储库中已存在的提交。特别是如果有多个用户。正确的方法是在单独的分支中恢复不需要的提交,将 revert-commits 推送到存储库,而不是合并/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
于 2013-11-06T16:30:05.993 回答
1
提交和分支的日志会有所帮助(如git log --graph --decorate --pretty=oneline --abbrev-commit --all
),以便了解您想要做什么。
但是考虑到 git 中的提交就像一个“依赖链”,并且知道你想要做什么,最简单的方法可能是从你上次同步的点创建一个新分支,只挑选提交什么你想要并使用它(如果你正在推动分支,这适用于 github)。
在此之后,如果您直接在 master 中工作,您将删除您不想要的提交,然后合并回之前创建的分支。
但同样,我只是在猜测您发布的信息。
于 2013-11-06T15:26:12.373 回答