回滚1步后无法推送git

时间:2014-02-13 18:44:25

标签: git

我发出以下命令:

git reset --hard HEAD~1

这就像我想要的那样,将代码推回原点。然后,我对代码进行了一些更改,并做了:

git add -A
git push

回来了......

 ! [rejected]        master -> master (non-fast-forward)
hint: Updates were rejected because the tip of your current branch is behind

所以我做了以下尝试强制它:

git push -f

结果:

Counting objects: 360, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (220/220), done.
Writing objects: 100% (230/230), 1.97 MiB | 354.00 KiB/s, done.
Total 230 (delta 81), reused 0 (delta 0)
remote: Analyzing objects (230/230) (18348 ms)
remote: Storing pack file and index...  done (284 ms)
To <url>
 ! [remote rejected] master -> master (TF401026: The ForcePush permission is required to perform this action.)
error: failed to push some refs to '<url>'

那么如何将此代码推送到当前的主代码?

git存储在visualstudio.com上,如果这会产生影响。

1 个答案:

答案 0 :(得分:3)

Helion提供了很好的建议,我建议接受它。基本上我在你的场景中会做的是:

首先,请按照原始错误消息的说明进行操作,其中包含git pull,仅在此情况下我会使用git pull --rebase

所以运行git pull --rebase <remote name> <branch name>

完成此操作后,您在重置后所做的更改将重播在您之前删除的文件之上。

您的git日志将类似于:

commit 0d703fc79bf996e04275888dd6732e77048b2748
Author: Peter Foti <peterfoti@me.com>
Date:   Thu Feb 13 14:18:39 2014 -0500

    Good Commit

commit 812fad226565382875021236690f74e96a54a16a
Author: Peter Foti <peterfoti@me.com>
Date:   Thu Feb 13 14:18:03 2014 -0500

    Commit you previously deleted

然后你可以做的是通过写:

来恢复之前重置的提交的更改

git revert <sha hash of bad commit>

恢复将要做的是实际创建另一个提交,以反转错误提交。因此,它将完全撤消以新提交形式提交的所有内容。

完成后,您将能够成功git push