【问题标题】:Safest way to merge my branch into master branch?将我的分支合并到主分支的最安全方法?
【发布时间】:2020-10-23 04:56:18
【问题描述】:

我有一个名为file_migration 的分支,我想将它与主分支合并。我只希望将我更新/添加的文件合并到主分支中。如果其他人对我的分支中未捕获的主分支进行了更改,我不希望我的合并影响其他人的更改。

例如,假设 master 的分支仅包含 2 个文件夹:folder_1folder_2。我的file_migration 分支包含我对folder_1 所做的更改。我没有更改folder_2 中的任何内容,但其他人对folder_2 进行了更改。所以我的分支中的folder_2 将比master 中的folder_2 早。我想确保我到主分支的合并只更新folder_1,并且不应该影响主分支中的folder_2(因为我的分支中的folder_2 比主分支中的folder_2 旧,所以我不希望我的合并影响folder_2)。

什么是最好的协议来确保我只将我对folder_1 所做的更改应用到主分支而不更改folder_2 中的任何内容?我读过另一个问题Safe way to merge my branch,人们建议他们可以简单地 git merge 到 master 分支。但我不确定该问题中提到的情况是否适用于我的情况。

【问题讨论】:

  • Judt 合并它。如果发生冲突,无论如何,您可以决定发生什么。
  • 一般来说,git 知道如何处理它。你使用的是 github 还是其他基于 web 的 git 平台?
  • 执行此操作的命令是git merge <branch where you want to merge from>,从您要合并到的分支执行。

标签: git git-merge git-branch


【解决方案1】:

只需合并它。

Git 足够聪明,可以知道哪些已更改,哪些未更改。如果您的分支已过时并不重要,如果您没有更改文件,Git 将不会合并对文件的任何更改。 You can read more about merge strategies; Git 使用了几个,并且会选择最合适的。

不要担心合并出错,就像 Git you can undo it 中的许多事情一样。

【讨论】:

  • 谢谢你,@Schwern。很高兴知道当 git 合并到远程分支时,它只会合并我在分支中更新的文件。关于 git,我还有很多东西要学,但这让我高枕无忧。
  • @Stanleyrr 请注意,master 不是远程分支。它是一个有远程的本地分支。这很重要,因为在你推动它之前,你所做的任何事情都不会影响其他任何人。这就是为什么在本地 master 分支上进行试验是安全的。
  • @Stanleyrr Git 确实很难,但非常值得努力学习。
  • 顺便说一句@Schwern,如果我通过单击github中Pull Request中的“Merge pull request”按钮进行合并可以吗? (PR已经被同事批了)
  • @Stanleyrr 是的,如果它通过了审查,可以合并。将来,在提交 PR 之前,请使用 git merge master 更新您的分支,并确保它仍然适用于最新的更改。
【解决方案2】:

返回合并 master(提交并从 master 推送更改)到您的 file_migration 分支。如果它们在文件夹 2 中有任何冲突,请更改主分支。如果它们在文件夹 1 中有任何冲突,则根据您的需要解决。

现在,尝试将更改从 file_migration 分支合并到 master。理想情况下,它不会显示文件夹 2 中的任何更改。但如果它显示,请不要暂存更改。仅暂存相关更改,并提交推送。

【讨论】:

  • 谢谢,@Kushal。您能否详细说明“反向合并”的含义?
  • 反向合并是指将父分支合并到特征分支。这样如果有任何冲突,都可以解决。所以,合并 master 到 feature 分支。
  • 从master合并然后立即合并到master是没有意义的。保存合并并直接合并到母版。如果出错,请撤消它。
  • 我建议反向合并,因为如果文件夹 2 中存在任何冲突,那么我们可以采用主版本。是的,如果您没有进行任何更改,那么无论如何它都不会显示任何提交更改
【解决方案3】:

使用 Github 进行合并最安全的方法是从您的分支向主分支发出拉取请求。你可以在这里阅读更多内容https://docs.github.com/en/free-pro-team@latest/github/collaborating-with-issues-and-pull-requests/about-pull-requests

【讨论】:

  • 我已经提交了一个拉取请求(PR)并且我的出现已经批准了它。您提到 git 知道如何处理差异。这是否意味着如果 git 注意到 master 分支中文件夹中的数据在我提交之前,即使我的分支包含该文件夹的旧数据,它也会保留这些数据?
  • 请注意,如果您将分支作为 PR 提交,您应该在提交之前通过将 master 合并到您的分支来更新它。这使您可以解决冲突并测试它是否适用于 master 中的最新更改。这意味着审阅者的工作量会减少。
猜你喜欢
  • 2023-01-30
  • 2015-06-23
  • 1970-01-01
  • 2013-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-26
相关资源
最近更新 更多