无法将git远程分支恢复为先前的提交

时间:2014-10-17 02:31:40

标签: git github

我正在清理一些跟踪问题,并希望从跟踪中删除一些文件。我搞砸了并删除了一堆我要恢复的文件。在不知不觉中,我在这种状态下推到了遥控器上。

好吧,是时候回去修理一下了。幸运的是,我想要的提交在历史中:

black-rainbows: scottnla$ git log -2

commit 76fa0b491c2424d93b16c1fe002401eaa17d481e
Author: scottnla
Date:   Thu Oct 16 21:57:57 2014 -0400

    Fixed tracking issue

commit 078cf16ee1bebfe7130b79d5958ecb0baf855002
Author: scottnla
Date:   Thu Oct 16 21:55:50 2014 -0400

    Finished preliminary analysis script

好吧,一切都不会丢失。所以我可以使用git reset --hard来获取我想要的地方,对吗?

black-rainbows: scottnla$ git reset --hard 

078cf16ee1bebfe7130b79d5958ecb0baf855002
HEAD is now at 078cf16 Finished preliminary analysis script

呼。我查看了文件,这是完全我想要的东西。

所以我尝试将此提交推回到远程...

black-rainbows:scottnla$ git push origin master
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to <git>
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

现在这真的很乱。我已经尝试了不同的方法来拉动并将遥控器与我当前的分支合并,但它总是删除文件(因为我有意义,因为我只是恢复了历史记录而且它不断重放提交)。

现在我的本地版本的repo正是我想要的,我怎么能把它推到遥控器上?

1 个答案:

答案 0 :(得分:2)

如果你完全确定

  

现在我的本地版本的repo正是我想要的,我怎么能把它推到遥控器上?

然后你可以做

git push -f remote-name branch-name

在你的情况下

git push -f origin master

-f表示您要强制推送更改。如果你和其他人一起工作,这不是一个好主意。