我的本地仓库比远程仓库领先 2 次提交 - 提交 A 和提交 B。
提交 A 是首先进行的,并且意外包含一个非常大的文件,该文件太大而无法暂存,并导致push
失败。
因此,我删除了该文件,取消跟踪它,然后进行了提交B。但是,我不能push
提交 B,因为这样提交 A 和 B 都在尝试push
,这会导致提交 A 在推送 B 之前导致相同的失败。
有没有办法告诉 git 忽略这两个提交中的第一个?还是"删除"提交 A?
也许你可以重置所有提交并重新开始,使用干净的堆栈。
git reset --soft HEAD~2
然后git commit -am "cleaned commit"
.
另一种选择是git rebase -i HEAD^^
。 如果将提交 A 和 B 压缩在一起,则在生成的违规文件提交中将没有记录。 如果您愿意,此方法还将使您有机会将提交 A 的一些原始提交消息回收到新的结果提交中。
您可以使用cherry-pick
.
假设您的远程分支master
并且具有两个提交的分支master-plus-a-and-b
:
git checkout master
git checkout -b master-plus-b
git cherry-pick master-plus-a-and-b
现在master-plus-b
只有master
的提交和提交b,而不是提交a。您可能需要在cherry-pick
过程中清理任何冲突。