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
<img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/image/270/754/732/1607592020999359.png" class="lazy" title="1607592020999359.png" alt="e72ae239e653bef7482d64c93ef8ab3.png">
查看工作区和版本库的区别
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
- 最终结果
以上是git实现merge撤销同时清除merge的本地文件的详细内容。更多信息请关注PHP中文网其他相关文章!

Git和GitHub是现代软件开发的核心工具。Git是一个分布式版本控制系统,GitHub则是一个协作平台。使用Git和GitHub可以提高开发效率并增强团队协作。

Git是由林纳斯·托瓦兹在2005年创建的分布式版本控制系统,GitHub则是基于Git的在线协作平台。Git通过快照记录文件变化,支持分支模型,GitHub则提供PullRequest等工具提升协作效率。

GitHub不仅仅是版本控制工具,它还提供协作、项目管理和社区交流功能。1)版本控制:利用Git追踪代码变化。2)协作:通过PullRequest提交代码变更。3)项目管理:使用Issues和Project板块管理任务。4)社区交流:通过fork和参与开源项目进行学习和交流。

Git和GitHub是不同的工具:Git是版本控制系统,GitHub是基于Git的在线平台。Git用于管理代码版本,GitHub提供协作和托管功能。

GitHub是一个基于Git的分布式版本控制系统,提供了版本控制、协作和代码托管的核心功能。1)创建仓库、克隆、提交和推送更改是基本用法。2)高级用法包括使用GitHubActions进行自动化、GitHubPages部署静态网站和使用安全功能保护代码。3)常见错误如合并冲突、权限问题和网络连接问题可以通过手动解决冲突、联系仓库所有者和设置代理来调试。4)优化工作流程的方法包括使用分支策略、自动化测试和CI/CD、代码审查以及保持文档和注释清晰。

Git和GitHub是不同的工具:Git是分布式版本控制系统,GitHub是基于Git的在线协作平台。Git通过工作区、暂存区和本地仓库管理代码,使用常见命令如gitinit、gitclone等。GitHub提供代码托管、PullRequest、IssueTracking等功能,基本流程包括创建仓库、推送代码和使用PullRequest协作。

Git和GitHub是现代软件开发的关键工具。 Git提供版本控制功能,通过仓库、分支、提交和合并管理代码。 GitHub则提供代码托管和协作功能,如Issues和PullRequests。使用Git和GitHub可以显着提升开发效率和团队协作能力。

Git是林纳斯·托瓦兹在2005年开发的分布式版本控制系统,GitHub则是2008年创立的基于Git的代码托管平台。Git通过快照管理文件,支持分支和合并,GitHub提供拉取请求、问题跟踪和代码审查功能,促进团队协作。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3 Linux新版
SublimeText3 Linux最新版

WebStorm Mac版
好用的JavaScript开发工具

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具