github不小心同步覆盖了本地文件

昨天不小心github的commit还没push就同步了,导致本地文件被覆盖,一度以为没救了。 后来得微博 @空非无和 @柳烟堆雪 指点,用git reflog 恢复了文件。

事情是这样的。。。 
我在两个电脑上修改一个项目,A修改文件a,B修改文件b。然后我干了下面这些事,按时间顺序。。。 
1. A上 git commit 
2. A上 git push 
3. B上 git commit 
4. B上 git pull 
然后。。。B上修改的b就被覆盖了。。。

而且git log已经找不到第3步的commit了。


解决方案: 
执行git reflog

502dd0f HEAD@{0}: pull --progress --rebase --prune origin master 147b3b5 HEAD@{1}: commit: commit-mark 502dd0f HEAD@{2}: rebase finished: returning to refs/heads/master 
  • 1
  • 2
  • 3

然后

git reset --hard 502dd0f git cherry-pick 147b3b5
  • 1
  • 2

就可恢复原来B上的本地文件, 然后push到服务器端:

git push origin master
  • 1

但出现:

 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'https://github.com/GitUsername/GitProgramName.git'
hint: Updates were rejected because a pushed branch tip is behind its remote
hint: counterpart. Check out this branch and integrate the remote changes hint: (e.g. 'git pull ...') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

可见,线下线上文件出现了冲突。 
解决方法:

  1. git pull
  2. 如果有冲突,解决冲突
  3. git push

但是git pull出现问题:

You are not currently on a branch. Please specify which branch you want to merge with. See git-pull(1) for details. git pull <remote> <branch>
  • 1
  • 2
  • 3
  • 4

解决方法:切换到master,再执行git push

git checkout -b temp
git checkout master

from: http://blog.csdn.net/abcjennifer/article/details/45101153

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值