git - 如何在 git 中 merge 单个文件?

标签 git github

在我们的 git 工作流程(使用 GitHub Enterprise)中,我们的功能分支必须 merge 到两个不同且独立的分支(dev 和 master)。只要不存在 merge 冲突,这种方法就可以正常工作。

例如, merge 到 dev 的两个功能分支对文件 F 的更改存在冲突。这两个更改都应该在 dev 中结束,但我不希望 dev 中的数十个不相关的更改 merge 到我的功能分支中,因为它们最终会后来在 master 中,那是不行的。

我们尝试过的:

  • GitHub 的编辑器可以让您轻松修复问题,但同时它也会悄悄地将目标分支 (dev) merge 到源分支 (feature 分支) 中。我还没有找到阻止它这样做的方法。
  • 似乎无法在单个文件上使用 git merge
  • git checkout dev --patch -- F 给你一个基于 vim 的可怕界面,我不敢向我的团队提出。
  • git checkout 中还有一个 --merge 选项,它似乎只是覆盖更改。
  • git checkout --conflict=diff3 得到了完全相同的结果。

到目前为止,我们想出的最好办法是在 GitHub 中进行更改,然后在功能分支中恢复 merge ,但这对我来说看起来并不是一个干净可靠的解决方案。

最佳答案

问题是,你没有在 git 中 merge 文件。您 merge 提交。因此,无论提交包含什么,它都应该包含在 merge 中,除非您可以手动选择和编辑 merge 的最终内容。但这应该是用来解决冲突和那种工作人员的。

也许您可以将功能分支中的提交拆分为两个提交,以便第一个提交仅包含对相关文件的更改,第二个提交将添加其余内容。并且您只能 merge 到该提交。

关于git - 如何在 git 中 merge 单个文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68920521/

相关文章:

java - Git 存储库分支可以是其他 Git 存储库中的子文件夹吗?

git - 两个 github 帐户推送到同一个 repo

ruby-on-rails - 使用 OAuth 访问私有(private)仓库的 Github API

git svn cherry pick 忽略警告

git - Travis-CI:将不同的分支部署到不同的服务器

git - 我怎样才能确保我的提交真的发生了?

Github 上 Jupyter notebook 中的 HTML anchor

html - 如何将图像添加到github网站上的导航栏

git - 如何使用git查看另一个开发者的分支?

git - github是否在历史记录中保留已删除的远程分支?如果是这样,这些可以恢复吗?