问:

我使用了 git pull 并发生了合并冲突:

unmerged:   some_file.txtYou are in the middle of a conflicted merge.

如何放弃对文件的更改并仅保留拉取的更改?

答1:

huntsbot.com全球7大洲远程工作机会,探索不一样的工作方式

由于您的 pull 不成功,因此 HEAD(不是 HEAD^)是您分支上的最后一个“有效”提交:

git reset --hard HEAD

您想要的另一部分是让他们的更改覆盖您的更改。

旧版本的 git 允许您使用“他们的”合并策略:

git pull --strategy=theirs remote_branch

但这已被删除,如 this message by Junio Hamano(Git 维护者)中所述。如 the link 中所述,您可以这样做:

git fetch origin
git reset --hard origin

您可以通过执行以下操作将其提升到更精细的级别,而不是进行硬重置:git fetch origin --> git reset origin (soft reset, your changes are still present) --> git checkout file_to_use_their_version_of another_file (steamroll your own changes back to match the origin) 我不再使用 git pull 了。因为在我最新的代码和源之间的斗争中,源应该总是赢,我总是 git fetch 和 git rebase origin。这实际上使我的合并和冲突少之又少。

我同意。我也喜欢先获取,然后检查上游更改(git log ..@{upstream} 或 git diff ..@{upstream})。在那之后,像你一样,我会重新调整我的工作。

如最近的回答中所述,从 1.6.1 版开始,可以使用“git reset --merge”

我使用 git merge -X theirs remote_branch 而不是 git pull --strategy=theirs remote_branch,因为 theirs 看起来像是 recursive 的一个选项

git merge --abort 更可取。

答2:

huntsbot.com高效搞钱,一站式跟进超10+任务平台外包需求

如果您的 git 版本 >= 1.6.1,则可以使用 git reset --merge。

此外,正如@Michael Johnson 所提到的,如果您的 git 版本是 >= 1.7.4,您也可以使用 git merge --abort。

与往常一样,请确保在开始合并之前没有未提交的更改。

从git merge man page

当存在 MERGE_HEAD 时,git merge --abort 等效于 git reset --merge。

MERGE_HEAD 在进行合并时出现。

此外,关于开始合并时未提交的更改:

如果您有不想在开始合并之前提交的更改,只需在合并之前 git stash 和在完成合并或中止合并之后 git stash pop 提交。

有趣 - 但手册让我害怕。究竟什么时候适合使用?什么时候必须指定可选的 ? #GitMoment :-o

当您想从头开始重做合并时,您通常会使用它。我从来不需要自己指定可选的提交,所以默认(没有可选的)就可以了。

我希望这个答案有更多的选票!在这一点上,它似乎是许多情况下最相关的解决方案。

即使有未提交的更改,git 也能够恢复合并前的状态。好的!

git merge --abort 只是 git reset --merge 的同义词吗?这个名字当然更有意义,但它有相同的功能吗?

答3:

打造属于自己的副业,开启自由职业之旅,从huntsbot.com开始!

git merge --abort

中止当前的冲突解决过程,并尝试重建预合并状态。如果合并开始时存在未提交的工作树更改, git merge --abort 在某些情况下将无法重建这些更改。因此,建议在运行 git merge 之前始终提交或存储您的更改。当 MERGE_HEAD 存在时, git merge --abort 等效于 git reset --merge。

http://www.git-scm.com/docs/git-merge

这从 git v1.7.4 开始可用。它是 git reset --merge 的别名。

答4:

与HuntsBot一起,探索全球自由职业机会–huntsbot.com

我认为这是您需要的git reset。

请注意,git revert 与 svn revert 的含义非常不同 - 在 Subversion 中,revert 将丢弃您的(未提交的)更改,将文件从存储库返回到当前版本,而 git revert “撤消”提交。

git reset 应该与 svn revert 等效,即丢弃不需要的更改。

答5:

huntsbot.com聚合了超过10+全球外包任务平台的外包需求,寻找外包任务与机会变的简单与高效。

对于 git >= 1.6.1:

git merge --abort

对于旧版本的 git,这将完成这项工作:

git reset --merge

或者

git reset --hard

答6:

保持自己快人一步,享受全网独家提供的一站式外包任务、远程工作、创意产品订阅服务–huntsbot.com

在这个特定的用例中,您并不想中止合并,只需以特定方式解决冲突。

也没有特别需要重置和执行不同策略的合并。 git 已正确突出显示冲突,并且接受另一方更改的要求仅适用于这个文件。

对于冲突中未合并的文件,git 会在索引中提供文件的通用基础、本地和远程版本。 (这是 git mergetool 从中读取它们以在 3 向差异工具中使用的位置。)您可以使用 git show 来查看它们。

# common base:
git show :1:_widget.html.erb# 'ours'
git show :2:_widget.html.erb# 'theirs'
git show :3:_widget.html.erb

解决冲突以逐字使用远程版本的最简单方法是:

git show :3:_widget.html.erb >_widget.html.erb
git add _widget.html.erb

或者,使用 git >= 1.6.1:

git checkout --theirs _widget.html.erb

感谢您的提示。不过,这不是糟糕的 git 用户界面吗?

@Peter:我不相信。只需几个带有简单选项的基本命令即可获得所需的结果。您会提出哪些改进建议?

我认为 git 1.6.1 命令很有意义,而且很好。这正是我想要的。我认为 1.6.1 之前的解决方案不优雅,需要了解 git 的其他部分,这些部分应该与合并解析过程分开。但是新版本很棒!

好吧,不评论它是否“差”,让我说我永远不会猜到涉及'show'和:1:、:2:和:3:的语法是恢复基础和两个“提示”文件的方法,但我非常高兴知道这种技术,所以:非常感谢!

答7:

huntsbot.com高效搞钱,一站式跟进超10+任务平台外包需求

您可以中止合并步骤:

git merge --abort

否则你可以保留你的更改(你在哪个分支上)

git checkout --ours file1 file2 ...

否则您可以保留其他分支更改

git checkout --theirs file1 file2 ...

答8:

保持自己快人一步,享受全网独家提供的一站式外包任务、远程工作、创意产品订阅服务–huntsbot.com

评论表明 git reset --merge 是 git merge --abort 的别名。值得注意的是,在存在 MERGE_HEAD 的情况下,git merge --abort 仅等同于 git reset --merge。这可以在 git help for merge 命令中阅读。

当 MERGE_HEAD 存在时, git merge --abort 等效于 git reset --merge。

合并失败后,如果没有 MERGE_HEAD,则可以使用 git reset --merge 撤消失败的合并,但不一定要使用 git merge --abort。 它们不仅是同一事物的新旧语法。

就个人而言,我发现 git reset --merge 对于与所描述的场景类似的场景更强大,并且通常合并失败。

这里的“合并失败”实际上是什么意思?合并冲突还是其他?或者换一种说法:MERGE_HEAD 什么时候不存在?我的后续问题是为了了解更好地使用“git reset --merge”。

@Ewoks git stash apply 对我造成了合并冲突,但 git merge --abort 没有帮助,而 git reset --merge 有帮助。

不得不使用它来解决失败的合并,由于某种原因我没有 MERGE_HEAD 所以 git merge --abort 不起作用。

请注意考虑到这一点的其他人:由于 stash pop 而发生合并时,MERGE_HEAD 不存在; reset --merge 将删除您未跟踪的文件。请参阅stackoverflow.com/a/67099267/1623757

从标签到主标签合并失败后我需要什么...

答9:

huntsbot.com高效搞钱,一站式跟进超10+任务平台外包需求

如果您最终遇到合并冲突并且没有任何要提交的内容,但仍然显示合并错误。应用所有下面提到的命令后,

git reset --hard HEAD
git pull --strategy=theirs remote_branch
git fetch origin
git reset --hard origin

请删除

.git\index.lock

文件[在恢复的情况下剪切粘贴到其他位置],然后根据您想要的版本输入以下任何命令。

git reset --hard HEAD
git reset --hard origin

希望有帮助!!!

答10:

huntsbot.com全球7大洲远程工作机会,探索不一样的工作方式

另一种保留工作副本状态的方法是:

git stash
git merge --abort
git stash pop

我通常不建议这样做,因为它实际上就像在 Subversion 中合并,因为它在以下提交中丢弃了分支关系。

当我不小心合并到一个处理不好的 git-svn 分支时,我发现这种方法很有用。使用 git-svn 跟踪分支时,壁球合并或樱桃选择更好。实际上,我的解决方案事后将合并变成了壁球合并。

问题的最佳答案

这与软重置有何不同?软重置还会将存储库重置为 head,但不会触及工作副本。

是的,但是当您的目标是“如何中止合并?”时,是否会想到“git reset --soft someref”。你怎么知道 someref 使用什么?因此,“git merge --abort”做了正确的事情并且显然被命名为对 Git 来说是令人耳目一新的。

答11:

huntsbot.com提供全网独家一站式外包任务、远程工作、创意产品分享与订阅服务!

由于 Git 1.6.1.3 git checkout 已经能够从合并的任一侧检出:

git checkout --theirs _widget.html.erb

原文链接:https://www.huntsbot.com/qa/yO8r/i-ran-into-a-merge-conflict-how-do-i-abort-the-merge?lang=zh_CN&from=csdn

保持自己快人一步,享受全网独家提供的一站式外包任务、远程工作、创意产品订阅服务–huntsbot.com

我遇到了合并冲突。如何中止合并?相关推荐

  1. 如何解决Git中的合并冲突

    如何解决Git中的合并冲突? #1楼 对于想要半手动解决合并冲突的Emacs用户: git diff --name-status --diff-filter=U 显示所有需要解决冲突的文件. 依次打开 ...

  2. git 合并冲突解决方法

    项目场景: 例如:在github上修改代码后在本地进行拉取的时候报错合并冲突 问题描述 合并冲突 常见冲突的生产场景如下 更新代码 提交代码 多个分支代码合并到一个分支时 多个分支向同一个远端分支推送 ...

  3. 【Git】Git 分支管理 ( 解决分支合并冲突 | 本地处理文件冲突 )

    文章目录 一.本地处理文件冲突 一.本地处理文件冲突 在下面的 [Git]Git 分支管理 ( 解决分支合并冲突 | 创建并切换分支 git switch -c feature1 | 修改 featu ...

  4. git分支操作、分支合并冲突解决

    目录 git bash分支命令 git bash分支简单操作 git bash分支合并冲突修改 git bash分支命令 注意:切换分支的时候,本地.暂存区的文件依然在本地.暂存区.也就是只是切换本地 ...

  5. 已经无法合并还报请合并git_GIT 分支管理:创建与合并分支、解决合并冲突

    分支就是科幻电影里面的平行宇宙,当你正在电脑前努力学习Git的时候,另一个你正在另一个平行宇宙里努力学习SVN. 如果两个平行宇宙互不干扰,那对现在的你也没啥影响.不过,在某个时间点,两个平行宇宙合并 ...

  6. git 合并冲突_git分支管理的策略和冲突问题

    备注: 知识点 关于分支中的冲突 分支管理的策略 分支策略 备注: 本文参考于廖雪峰老师的博客Git教程.依照其博客进行学习和记录,感谢其无私分享,也欢迎各位查看原文. 知识点 git log --g ...

  7. git 合并冲突_GIT提交记录和Revert commit过程分析

    一.根据GIT提交记录查看提交过程 先做个git分支的背景介绍 图1 步骤说明 1⃣️ 项目A 默认分支是 master 2⃣️ 基于master分支创建 f1.f2.test分支 3⃣️ f1 发起 ...

  8. IDEA中Git合并冲突

    1.美图 2.背景 IDEA中Git合并冲突 先commit本地修改的文件到本地repository pull源码,因为存在代码冲突,所以接下来会自动弹出merge融合窗口,如下图:

  9. Eclipse的Git插件Egit: merge合并冲突具体解决方法

    Eclipse的Git插件Egit: merge合并冲突具体解决方法 参考文章: (1)Eclipse的Git插件Egit: merge合并冲突具体解决方法 (2)https://www.cnblog ...

最新文章

  1. 语音预处理:服务器平台“部署”
  2. ASP错误捕获的几种常规处理方式
  3. linux下网络排错与查看
  4. VTK:图片之ImageAnisotropicDiffusion2D
  5. 在java中写出html代码,在java里写html代码
  6. Redis-01-NoSQL简介及Redis数据库安装
  7. hduoj 1532
  8. 《跟李沐读论文》之对比学习
  9. Integrity数据库简介
  10. XMindCrack.jar下载
  11. c#窗体编辑个人简历_C#个人简历完整代码
  12. 网络工程师成长日记076-如何成为网络工程师中的高手
  13. Geekban极客班 第二周
  14. java读书网站课程设计_Java课程设计
  15. xxxxxxxxxxxxxxxxx
  16. SM5401移动电源充放电管理芯片5V/0.8A充电宝芯片兼容HT4928替代TP4333
  17. 构建大型网站(百万级访问量)的技术准备
  18. 解决MyBatisSystemException: selectOne(Unknown Source)
  19. CSS中的font-family字体集,附在chrome浏览器中的效果图
  20. 细数那些让人难以抗拒的经典数学书

热门文章

  1. linux usb声卡驱动安装失败,声卡驱动安装出现错误?
  2. 熊猫烧香制造者看守所写下杀毒程序
  3. 智能车的转弯部分_邛崃斯维刻平衡车维修平衡车不充电怎么处理哪里有
  4. 战争雷霆warthunder游戏内自定义文本mod的制作方法
  5. 【券商报告】汽车行业新趋势系列报告之三:OTA催化乘用车消费大变革——附下载链接
  6. 配图讲解10个风光摄影构图技巧
  7. 瞭望尖兵TYQZ终端服务器,黑山瞭望塔的“哨兵”:寂寞寂寞就好
  8. 现货k线图基础知识怎么学?
  9. 电脑突然自动关机,重新开机后黑屏显示 如下
  10. 专属IE浏览器的WEB自动化测试工具