我已经在少数提交中将一些凭据推送到远程源主服务器。
有许多更改,只想删除凭据。
说:
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处制作了HEADgit 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)
?
答案 0 :(得分:1)
看起来您希望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
在显示的编辑器中,将pick
更改为squash
以进行提交lG1
并保存文件并退出编辑器。浏览剩下的菜单,然后你应该得到你想要的历史记录,然后你可以快进合并到master
。