我如何 git 只检查最后一次提交而忽略所有以前的提交?

How can I git checkout with just last commit ignoring all previous commit?

我已经在几次提交中将一些凭据推送到远程 origin master。

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

说:

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中误推送的凭据 所以我删除了一些提交并在远程和本地 master

中将 HEAD 设置为 D1
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 我也有这些证书, 所以我不能合并它,因为这将再次创建带有凭据的提交,

有没有一种方法可以在仅通过最后一次提交 (lG1) 删除其他分支的凭据并忽略之前的提交后检出 lF1->lG1

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


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

git checkout abc
git rebase -i lE1

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