如何在最后一次提交时忽略所有先前提交的git checkout?

时间:2016-12-31 18:12:59

标签: git github bitbucket

我已经在少数提交中将一些凭据推送到远程源主服务器。

有许多更改,只想删除凭据。

说:

Local Branch:  A->B->C->D1->E1->F1(HEAD) (master)
                     |->lC1->lD1->lE1->lF1 (l_abc) 

Remote Branch:  A->B->C->D1->E1->F1(HEAD) (master)

在E1中错误推送的凭据 所以我删除了一些提交,并在远程和本地主人

中的D1处制作了HEAD
git reset --hard HEAD^^      
git push -f origin master   

现在的结构是 说:

Local Branch:  A->B->C->D1(HEAD) (master)
                     |->lC1->Dl1->lE1->lF1 (abc) 

Remote Branch:  A->B->C->D1(HEAD) (master)

即使在Local: lC1->lD1->lE1->lF1我也有这些凭据, 所以我可以合并这个,因为这将再次创建带有凭据的提交,

有没有办法可以在仅使用最后一次提交lF1->lG1删除凭证到其他分支并忽略之前的提交后签出(lG1)

1 个答案:

答案 0 :(得分:1)

看起来您希望git checkout master然后git cherry-pick lG1只能将提交提交给master。最后,您可以再次git push -f origin master

更新:根据OP的评论,看起来我们想要将提交lF1lG1压缩在一起,这样它们看起来就像是一个引入更改的提交在lF1中删除了凭据lG1。这可以通过以下命令开始来完成。

git checkout abc
git rebase -i lE1

在显示的编辑器中,将pick更改为squash以进行提交lG1并保存文件并退出编辑器。浏览剩下的菜单,然后你应该得到你想要的历史记录,然后你可以快进合并到master