【问题标题】:How do I merge files without conflict in git?如何在 git 中合并文件而不发生冲突?
【发布时间】:2018-03-29 12:42:35
【问题描述】:

我们是两个人在 Github 的一个主分支 repo 上工作。

而且,今天我在我提交的本地副本中修改了一个文件,然后我想将我的朋友更改与他推送到 github 合并,所以我做了:

git fetch
git diff --stat HEAD...HEAD@{upstream}

我可以看到

 src/components/views/invoicing/expenses/add.vue  | 106 ++++++--------
 src/components/views/invoicing/expenses/edit.vue | 173 ++++++++++++-----------
 src/components/views/org/Add.vue                 |   4 +-
 src/i18n/de.js                                   |  22 ++-
 src/i18n/en.js                                   |  26 ++--
 src/i18n/fr.js                                   |  11 +-
 src/resources/expensesList.js                    |   4 +-

现在,我可以合并所有文件,因为我没有修改它们,除了我修改并提交的 src/resources/expensesList.js 文件。

所以,git merge origin/master 说:

CONFLICT(内容):src/resources/expensesList.js 中的合并冲突

但是所有其他文件都是可合并的并且没问题,所以无论如何要解决冲突以指示 git 使用我的更改或传入的更改,以便我可以运行合并而不会发生冲突

【问题讨论】:

  • 是的,重点是什么?继续合并吧。
  • 因为冲突而无法合并
  • 它已经告诉你该做什么了。启动合并工具并合并或进行您/他们的更改。
  • 有办法,但我建议不要习惯它们。因为它最终可能会恢复良好的变化。这次只需解决冲突。
  • 我会尝试得出合并对于分布式去中心化版本控制是必要的条款

标签: git github git-merge git-pull git-diff


【解决方案1】:

默认情况下,当 Git 由于一个或多个冲突文件而无法自动合并时,它将中止合并并将标记放入冲突文件中,这将帮助您通过做出决定来手动解决冲突对于关于保留哪个版本的每一个冲突的代码块。可以使用 -Xours-Xtheirs 标志修改此行为。

要合并并始终使用您的冲突文件版本,请使用:

git merge -Xours <branch>

要合并并始终使用冲突文件的远程版本(在本例中为您的协作者的版本),请使用:

git merge -Xtheirs <branch>

有关更多详细信息,请参阅 Git 文档中的 Git Tools - Advanced Merging 章节。

【讨论】:

  • 你能扩展一下吗? XoursXtheirs 是什么意思,它们的作用是什么?
猜你喜欢
  • 2020-08-23
  • 2018-09-17
  • 1970-01-01
  • 1970-01-01
  • 2012-12-08
  • 2017-07-24
  • 1970-01-01
  • 2012-10-06
  • 1970-01-01
相关资源
最近更新 更多