Git - 如何重置“推送”

Ten*_*igh 5 git push bitbucket

不知何故,我有一个非常大的本地存储库,因为我不小心添加了超过 2 GB 的文件,并且不假思索地试图推动它。我中止了,删除了文件并重新提交,但是当我尝试git push origin master使用 Bitbucket 时,它失败了:

fatal: The remote end hung up unexpectedly
Run Code Online (Sandbox Code Playgroud)

我的 .git 文件仍然很大,尽管我早就删除了不需要的文件。由于推送超过 2 GB,Bitbucket 说我需要将其设置http.postBuffer为更高的数字。我已经做过很多次了,但在尝试了大约 15 次之后,我想重新开始。

git status 给我这个:

On branch master
Your branch is ahead of 'origin/master' by 4 commits.
  (use "git push" to publish your local commits)
Run Code Online (Sandbox Code Playgroud)

但是由于推送永远不起作用,我该如何解决?最坏的情况是我可以炸毁 repo 并重建它,但我想知道是否有办法重置推送,因为它一直失败。

Mel*_*ius 4

当有问题的提交是最近的提交时,weigreen\xe2\x80\x99s 答案将有所帮助,在其他情况下,您\xe2\x80\x99ll 需要重写历史记录。我更喜欢交互式 rebase

\n\n
git rebase -i <some-commit-before-the-problematic-one>\n
Run Code Online (Sandbox Code Playgroud)\n\n

它将显示提交列表以及对pick它们的默认操作。如果您想保留有问题的提交的一部分,请更改pick为该edit行。如果您想完全删除它,只需删除该行即可。如果您选择编辑该提交,Git 会将工作树置于您\xe2\x80\x99刚刚完成有问题的提交时的状态。更改您需要的内容并修改提交:

\n\n
git commit --amend\n
Run Code Online (Sandbox Code Playgroud)\n\n

之后,让 Git 完成 rebase 使用

\n\n
git rebase --continue\n
Run Code Online (Sandbox Code Playgroud)\n