我如何 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 的评论,我们似乎想将提交 lF1
和 lG1
压缩到一起,这样它们看起来就像一个引入更改和 lF1
并在 lG1
中删除了凭据。这可以通过从以下命令开始来完成。
git checkout abc
git rebase -i lE1
在显示的编辑器中,将提交 lG1
的 pick
更改为 squash
并保存文件并退出编辑器。浏览剩余的菜单,然后您应该得到您想要的历史记录,然后您可以快进合并到 master
.
我已经在几次提交中将一些凭据推送到远程 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 设置为 D1git 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 的评论,我们似乎想将提交 lF1
和 lG1
压缩到一起,这样它们看起来就像一个引入更改和 lF1
并在 lG1
中删除了凭据。这可以通过从以下命令开始来完成。
git checkout abc
git rebase -i lE1
在显示的编辑器中,将提交 lG1
的 pick
更改为 squash
并保存文件并退出编辑器。浏览剩余的菜单,然后您应该得到您想要的历史记录,然后您可以快进合并到 master
.