删除我推送的所有提交

时间:2016-05-05 21:38:29

标签: git git-commit revert

我在branch1,我为branch1做了几次提交。完成我的任务(并将这些提交推送到远程)。我使用以下命令从branch2切换到branch1

git checkout -b branch2

我打算从master创建它,但我错误地从branch1

创建了它

我在branch2中做了一些更改,然后通过命令git push origin branch2提交/推送到远程。现在,当我查看远程仓库时,我会看到branch1历史记录中的所有branch2次提交。

请记住,这是我第一次提交branch2,所以我真的不关心所有早期的提交。

P.S

更多背景如何与分支相关联。

我有一些代码在master分支(我们决定废弃)。现在,我创建了一个新的分支branch1

> git status
> on branch master
> git checkout -b branch1

具有项目的基本脚手架。该分支(一旦批准)将合并(在这种情况下是覆盖)master分支。 branch2在顶部添加了db层。理论上它会被添加到branch1之上,但当我这样做时,我看到branch2拥有我在branch1中提交的所有提交,这让我想到当我们合并时branch1 1}}到master,然后branch2不会导致双重提交历史记录?这就是我想删除之前提交的原因(从branch1借用branch2)。

1 个答案:

答案 0 :(得分:1)

当你这样做时:

git checkout -b branch2

您在branch2之上创建了branch1。这意味着branch1中的所有提交都将在那里,您对branch2的新提交将添加到此之上。在不知道branch1master之间的确切关系的情况下,后者是您真正打算创建分支的最佳方法,纠正这种情况的最安全的方法可能是从{来挑选新的提交{1}}到从branch2创建的分支上:

master

现在,您的提交位于正确的分支之上。您现在可以通过以下方式删除git checkout branch2 git log # observe and record the SHA-1 hashes of the commits you made git checkout master git checkout -b new_branch2 # now cherry-pick the commits from branch2 which you want to keep git cherry-pick 2hie87jm8 # first commit git cherry-pick j2cnd82ld # second commit # and so on for all commits, in the order you made them

branch2