• 技术文章 >开发工具 >git

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

    coldplay.xixicoldplay.xixi2020-12-10 17:29:39转载4227

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

    推荐:git教程

    一、开门见山

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

    注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的文件。但是发现合错了分支,要撤销刚刚的合并操作。但是本地文件又有改动。

    f49ac50916c1b7d766a7878d480f6da.png


    验证法一

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


    验证法二

    6882cd7f5334c5bd2da63d2f72f856e.png

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

    af9d93857e817496d0033f0009e2813.png

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

    d6f9c303685a2f5210c7baf70c7c78c.png

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

    以上就是git实现merge撤销同时清除merge的本地文件的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:简书,如有侵犯,请联系admin@php.cn删除
    专题推荐:git merge
    上一篇:介绍GIT 代码分支管理模型之一 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • GIT 忽略文件 “.gitignore” 使用• 码云和github的区别是什么?• 这15个有用的Github功能,你知道吗!• git常用的六个命令是什么
    1/1

    PHP中文网