当前位置:主页 > 聚焦 >

git实现merge撤销同时清除merge的本地文件

时间:2020-12-12 09:37:37

  git教程栏目介绍如何清除merge

  :git教程一、开门见山

  解决办法
法一:git reset --merge merge前的任何一次提交的hash串
注1:

  如果工作区在merge之后没有任何改动,大胆的用此方法。如果工作区在merge之后有了改动,那么此方法会重置工作区的一切修改,慎用。但是会保留暂存区的改动。

  注2:当MERGE_HEAD 在当前的提交上的时候 (就是当合并分支时遇到错误或者冲突,分支旁边会多出“MERGING”这个东西)git merge --abort 与此方法一样
法二:

  git reset merge前的任何一次提交的hash串 git clean -n #预删除 #将预删除不想删除的文件加入.gitignore git add .gitignore git clean -f二、构造环境

  约定:远程仓库 URL 使用 remote url 代替
1、模拟开发者一号

  mkdir gitTest #新增文件夹gitTest cd gitTest git init git remote add origin "remote url" echo "长太息以掩涕兮, 哀民生之多艰。" > lyrics.txt #新建 lyrics.txt 并在里面写入文字 git add lyrics.txt #将 lyrics.txt加入暂存区 git commit -m "lyrics.txt from user 1" git push origin master git checkout -b dev git push origin dev:dev

  2、模拟开发者二号

  mkdir gitTest2 cd gitTest2 git clone "remote url" cd gitTest echo "Don't make me suffer" > Suffer.txt git add Suffer.txt git commit -m "Suffer.txt from user2" git push origin dev

  3、模拟开发者一号

  git checkout master git merge origin/dev #合并远程dev分支 echo "余虽好修姱以鞿羁兮, 謇朝谇而夕替。" >> lyrics.txt #修改文件 lyrics.txt echo "余虽好修姱以鞿羁兮, 謇朝谇而夕替。" > test.txt #新建test并写入内容 git add test.txt #将 test.txt 加入暂存区三、撤销 merge

  开发者一号面临的情况:本地master合并了远程dev的内容,本地多了一个Suffer.txt的文件。但是发现合错了分支,要撤销刚刚的合并操作。但是本地文件又有改动。

  查看当前本地文件 ls

  查看工作区和版本库的区别 git diff HEAD
 

  


 

  查看提交历史 git log --oneline --graph



 

  验证法一

  撤回 merge git reset --merge 7f811bf 或执行git reset --merge HEAD^
HEAD^此例中是7f811bf,上面提交历史可看到7f811bf就是merge前提交的hash串

  查看本地文件 ls 并查看文件内容

  


 

  再次查看提交记录 git log --oneline --graph
 

  


 

  查看

  工作区和暂存区的区别 git diff工作区和版本库的区别 git diff HEAD暂存区和版本库的区别 git diff --cached



 

  最终结果: 本地文件改动都被重置了(即开发者一号merge后增加的--余虽好修姱以鞿羁兮, 謇朝谇而夕替,被删除了),但暂存区还有内容。故工作区merge 后有改动慎用

  验证法二

  撤回 merge git reset 7f811bf

  再次查看当前本地文件 ls
 

  


 

  再次查看提交记录 git log --oneline --graph
 

  


 

  阶段结果:很明显可以看到,merge已经回滚了,但是本地合并过来的文件依然还在。还要将多余合并的文件(Suffer.txt)删除。

  在删除之前可以先看看执行删除操作会删掉那些内容(预删除) git clean -n


 

  注意:这里看到本地原来的文件 test.txt 也将被删除,这不是我所期望的。我只希望可以删除 meger 的文件。

  将 test.txt 文件加入 .gitignore 再执行预删除

  echo test.txt > .gitignore git add .gitignore git clean -n


 

  阶段结果:可以看到将会被删除的文件只剩下 merge 的多余文件了。

  执行 删除操作 git clean -f最终结果

热点推荐
1 币安将于2026年7月1日进行比特币网络钱包

消息,币安宣布将于2026年7月1日01:00对比特币网络进行钱包维护。在维护期间,比特币网络的存...

2 鲸鱼地址0xa6e以25倍杠杆开设22000枚ETH空单

消息,鲸鱼地址0xa6e最近以25倍杠杆开设了一笔新的22,000枚ETH空单,名义价值约为3500万美元。...

3 Pump.fun累计回购超4亿美元PUMP代币,平台总

消息,Pump.fun平台已累计回购超过4亿美元的PUMP代币,涉及约1455亿枚PUMP。回购计划自2025年7月启...

4 欧盟已发放244张MiCA牌照,德国与法国占比

消息,欧盟截至6月29日已发放244张MiCA牌照,其中德国以57张居首,法国以26张位列第二。希腊、...

5 Defillama:加密行业累计损失约166.9亿美元

消息,加密行业累计约166.9亿美元因黑客攻击、DeFi漏洞及跨链桥攻击而损失,其中约40%与私钥...

6 Kraken即将上线Bittensor子网Alpha代币

消息,DCG创始人兼首席执行官Barry Silbert在X平台披露,Kraken即将上线Bittensor子网Alpha代币,首批...

7 CoinDesk Public Keys讨论以太坊机构超级周期

消息,CoinDesk Public Keys节目讨论了以太坊机构超级周期、Sharplink完成7500万美元融资、稳定币信...

8 分析师:欧盟MICA截止日期将使1000万用户

消息,欧盟的市场加密资产截止日期将于7月1日到来,可能使超过1000万名欧洲加密用户面临寻...

9 以防长称美方施压迫使以军改变对黎真主

消息,当地时间29日,以色列国防部长卡茨日前在与军事记者的闭门谈话中披露,受美国政府施...

10 Bitdeer签署挪威数据中心机柜托管协议

消息,Bitdeer宣布,其全资子公司Tydal Data Center AS已就挪威Tydal AI数据中心签署一项机柜托管租赁...

成都来彰科技 蜀ICP备2025134723号-1

资讯来源互联网,如有版权问题请联系管理员删除。