如何仅将我的最新提交与 git 同步?

How to sync only my latest commit with git?

我的本地存储库比远程存储库领先 2 个提交 - 提交 A 和提交 B。

提交 A 先进行,意外包含一个非常大的文件,该文件太大而无法暂存并导致 push 失败。

所以,我删除了文件,取消跟踪它,然后提交 B。但是,我不能 push 提交 B,因为提交 A 和 B 都试图 push,这导致在推送 B 之前提交 A 导致相同的失败。

有什么方法可以告诉 git 忽略这两个提交中的第一个吗?或者 "delete" 提交 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 过程中清除任何冲突。

也许您可以重置所有提交并重新开始,使用干净的堆栈。

  • git reset --soft HEAD~2 然后 git commit -am "cleaned commit".

另一种选择是git rebase -i HEAD^^。如果您将提交 A 和 B 压缩在一起,那么在有问题的文件的最终提交中将不会有任何记录。如果您愿意,这种方法还可以让您有机会将提交 A 的一些原始提交消息回收到新的结果提交中。