我的本地存储库提前2次提交 - 提交A并提交B.
提交A首先进行,并且包含一个非常大的文件,这个文件太大而无法暂存,导致push
失败。
所以,我删除了文件,未跟踪它,然后提交了B.但是,我不能push
提交B,因为然后提交A和B都尝试push
,这导致commit A在推送B之前导致相同的失败。
有没有办法告诉git忽略这两个提交中的第一个?或者“删除”提交A?
答案 0 :(得分:3)
也许你可以重置所有提交并重新开始,使用干净的堆栈。
git reset --soft HEAD~2
然后git commit -am "cleaned commit"
。答案 1 :(得分:3)
另一个选择是git rebase -i HEAD^^
。如果你将A和B压缩在一起,那么在违规文件的最终提交中将没有记录。如果您愿意,这种方法还可以让您有机会将提交A的一些原始提交消息回收到新生成的提交中。
答案 2 :(得分:0)
您可以使用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,而不是提交。您可能必须在cherry-pick
过程中清除任何冲突。