如何在上传提交时中断后删除Git本地提交

时间:2013-10-15 17:30:27

标签: git

我不小心在git update(git add wrongfile)中添加了一个错误。我提交了这个更改并开始推送到git服务器(git push origin master)。但后来我才意识到我提交了一个错误的文件(错误的文件大小超过200MB的XML文件),因为我中断了上传。我删除了该文件并将其从git更改中删除(git rm wrongfile)。但现在终端说:

  

通过1次提交,您的分支领先于“origin / master”。 (使用“git push”发布您的本地提交)

有人知道如何解决这个问题吗?我使用git reset --hard HEAD但它没有用。 (如果出现任何问题,我已经备份了我的文件。)

4 个答案:

答案 0 :(得分:0)

您看到的消息(您的分支提前1次提交)意味着您的本地存储库有一个尚未推送的提交。

请参阅此帖子:git - Your branch is ahead of 'origin/master' by 1 commit

如果你犯了垃圾但没有推,

git reset --soft HEAD~1 HEAD~1是head之前提交的简写。或者,您可以参考要重置的哈希的SHA-1。 --soft选项将删除提交但它将保留所有已更改的文件“要提交的更改”,因为git status会将其设置为。

如果你想在工作树中删除对工作树中跟踪文件的任何更改,那么在使用头之前提交 - 硬件。 现在,如果你已经推了一个拉通,这通常是我的情况,你不能使用git reset。但是你可以做一个git revert,

git revert HEAD 这将创建一个新的提交,以反转意外提交引入的所有内容。

(引自http://nakkaya.com/2009/09/24/git-delete-last-commit/

答案 1 :(得分:0)

没有任何问题。提交仍然存在于本地,这就是所有消息告诉您的(使用git fetch ; git log origin/master..master进行验证)。您可以通过运行

在本地撤消提交
git reset head~

这不会在本地更改任何文件(这是“软”重置)。

如果您的工作树中没有任何已修改的文件,

git reset --hard head将无效。

答案 2 :(得分:0)

您尝试过:git reset --soft HEAD^?或者您可以:git reset --soft [commit_hash]重置您的错误提交。在此之后,您可以删除那些不必要的文件并再次提交,然后推送它。

答案 3 :(得分:0)

我将项目克隆到另一个文件夹并将当前正在运行的项目文件夹放到其中并从该文件夹中推送更改。最后删除了混乱的项目目录并移动到新克隆的目录。这是一个最糟糕的解决方案,但我这样做,因为我不知道从终端解决它的正确命令。 #timeSaver #atthismoment