git实现merge撤销同时清除merge的本地文件
时间:2020-12-10 17:29
解决办法 注2:当MERGE_HEAD 在当前的提交上的时候 (就是当合并分支时遇到错误或者冲突,分支旁边会多出“|MERGING”这个东西) 约定:远程仓库 URL 使用 2、模拟开发者二号 3、模拟开发者一号 开发者一号面临的情况:本地master合并了远程dev的内容,本地多了一个Suffer.txt的文件。但是发现合错了分支,要撤销刚刚的合并操作。但是本地文件又有改动。 查看当前本地文件 查看工作区和版本库的区别 撤回 merge 查看本地文件 再次查看提交记录 查看 最终结果: 本地文件改动都被重置了(即开发者一号merge后增加的--余虽好修姱以鞿羁兮, 謇朝谇而夕替,被删除了),但暂存区还有内容。故工作区merge 后有改动慎用 撤回 merge 再次查看当前本地文件 再次查看提交记录 阶段结果:很明显可以看到,merge已经回滚了,但是本地合并过来的文件依然还在。还要将多余合并的文件(Suffer.txt)删除。 注意:这里看到本地原来的文件 test.txt 也将被删除,这不是我所期望的。我只希望可以删除 meger 的文件。 将 test.txt 文件加入 .gitignore 再执行预删除 阶段结果:可以看到将会被删除的文件只剩下 merge 的多余文件了。 以上就是git实现merge撤销同时清除merge的本地文件的详细内容,更多请关注gxlsystem.com其它相关文章!git教程栏目介绍如何清除merge
推荐:git教程
一、开门见山
法一:git reset --merge merge前的任何一次提交的hash串
注1:git merge --abort
与此方法一样
法二:git reset merge前的任何一次提交的hash串
git clean -n #预删除
#将预删除不想删除的文件加入.gitignore
git add .gitignore
git clean -f
二、构造环境
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
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
git checkout master
git merge origin/dev #合并远程dev分支
echo "余虽好修姱以鞿羁兮, 謇朝谇而夕替。" >> lyrics.txt #修改文件 lyrics.txt
echo "余虽好修姱以鞿羁兮, 謇朝谇而夕替。" > test.txt #新建test并写入内容
git add test.txt #将 test.txt 加入暂存区
三、撤销 merge
ls
git diff HEAD
git log --oneline --graph
验证法一
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
验证法二
git reset 7f811bf
ls
git log --oneline --graph
git clean -n
echo test.txt > .gitignore
git add .gitignore
git clean -n
git clean -f