您当前的位置: 首页 >  git

Peter_Gao_

暂无认证

  • 0浏览

    0关注

    621博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【Git】pull时发生冲突,提示:error: Your local changes to the following files would be overwritten by merge:

Peter_Gao_ 发布时间:2020-03-04 18:23:26 ,浏览量:0

 

 

这种情况下,如何保留本地的修改同时又把远程的合并过来呢?

首先取决于你是否想要保存本地修改。(是 /否)

是 别急我们有如下三部曲

    git stash       git pull origin master       git stash pop     git stash的时候会把你本地快照,然后git pull 就不会阻止你了,pull完之后这时你的代码并没有保留你的修改。惊了! 别急,我们之前好像做了什么?

STASH 这时候执行git stash pop你去本地看会发现发生冲突的本地修改还在,这时候你该commit push啥的就悉听尊便了。

否 既然不想保留本地的修改,那好办。直接将本地的状态恢复到上一个commit id 。然后用远程的代码直接覆盖本地就好了。

git reset --hard  git pull origin master  

Pull is not possible because you have unmerged files.

本地的push和merge会形成MERGE-HEAD(FETCH-HEAD), HEAD(PUSH-HEAD)这样的引用。HEAD代表本地最近成功push后形成的引用。MERGE-HEAD表示成功pull后形成的引用。可以通过MERGE-HEAD或者HEAD来实现类型与svn revet的效果。

解决:

1.将本地的冲突文件冲掉,不仅需要reset到MERGE-HEAD或者HEAD,还需要--hard。没有后面的hard,不会冲掉本地工作区。只会冲掉stage区。

git reset --hard FETCH_HEAD 2.git pull就会成功。

如果hard后想再恢复

简单粗暴:git reflog,然后找到需要回滚到的版本git reset --hard HEAD@{x}(x为列表中对应的记录编号)

只要提交过的commit基本都能在git reflog里面找到,通常是最近100条。

强推远端仓库:

1. 使用 git log --pretty=oneline 命令查看所有的历史版本,获取某个历史版本的id,假设查到历史版本的id是139dcfaa558e3276b30b6b2e5cbbb9c00bbdca96。

2. 版本回退(一般只需要取版本号的最前面4位数)  git reset --hard 139dc 3. 把修改推到远程服务器 git push -f -u origin master

强拉:

git fetch --all && git reset --hard origin/master && git  pull

 

关注
打赏
1664521772
查看更多评论
立即登录/注册

微信扫码登录

0.0380s