Git - 如何重置"推送"

时间:2016-11-30 07:38:36

标签: git push bitbucket

不知何故,我有一个非常大的本地存储库,因为我偶然添加了超过2 GB的文件而没想到试图推动它。我中止了,删除了文件并做了重新授权,但是当我尝试git push origin master到Bitbucket时,它失败了:

fatal: The remote end hung up unexpectedly

我的.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)

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

2 个答案:

答案 0 :(得分:2)

当有问题的提交是最新提交时,weigreen’s answer会有所帮助,在其他情况下,您需要rewrite the history。我更喜欢交互式rebase

git rebase -i <some-commit-before-the-problematic-one>

它会显示提交列表以及默认操作pick。如果您想保留有问题提交的一部分,请在该行上将pick更改为edit。如果您想删除它,只需删除该行。如果您选择编辑该提交,Git会将工作树置于您刚刚完成有问题的提交时的状态。改变你需要的东西并修改提交:

git commit --amend

之后,让Git使用

完成rebase
git rebase --continue

答案 1 :(得分:1)

您可以git reset

执行此操作
git reset --hard <commit-id>

您可以使用git log

获取commit-id

您将失去HEAD与您选择的提交之间的所有工作