在git中将特定文件的更改从一个分支合并到另一个分支

时间:2013-07-04 08:26:09

标签: git

我是Git的新手。 我有以下设置。

SETUP:

master-branch:我项目的主要稳定分支。实际上,它包含我网站的HTML代码。

当我在网上上传文件时,我在index.html中做了一些更改以调整正确的文件位置。 所以我有两个版本的同一个文件:masterbranch(mbVersion)和web(wVersion)

我做了什么:

现在我在mbVersion中做了一些更改。我想要在wVersion中进行这些更改。 (但我不想将wVersion中的链接更改为旧的mbVersion)

我打算做什么:

我正在考虑为Web版本创建一个新的分支(比如Web分支),然后将特定的提交从主分支合并到Web分支。

问题:

  1. 我做得对吗?还有其他更好的办法吗?

  2. 如果这是正确的方法,那么将特定提交合并到网络分支会给我所需的更改而不更改链接吗?那么,我该如何合并?我计划使用它:How can I merge a specific file from one branch into another branch in Git

  3. 我应该选择樱桃?
  4. 我做过什么:

    我尝试了http://jasonrudolph.com/blog/2009/02/25/git-tip-how-to-merge-specific-files-from-another-branch/,但它没有合并两个文件的内容。它基本上只是覆盖文件,而不是实际合并文件的内容

    实际上,这是一个大项目,约有20人正在研究它。所以,我不想搞砸任何东西。

3 个答案:

答案 0 :(得分:1)

我建议您在配置中只使用一个分支和分支,具体取决于代码的部署位置。使用git,您可以使用涂抹过滤器支持它,详见此处:https://stackoverflow.com/a/13616911/758345

答案 1 :(得分:1)

  1. 我认为为他们创建两个独立的分支是个好主意。

  2. 确保您在wVersion并合并mbVersion,git将按预期完成工作。

  3. 我个人不推荐cherry-pick,因为cherry-pick实际上做的是根据特定提交的差异及其父提出补丁,然后将其应用于当前分支。它可能会在将来的合并中引起冲突,因为cherry-pick只关心文件而不关心历史。

答案 2 :(得分:0)

您希望从{mbVersion pull进行最新更改,但是您希望确保您在wVersion中对某些特定文件所做的更改不会丢失,对吗?

在这种情况下,您可以像往常一样pull。 Git看到您在wVersion中进行了更改,并且这些更改不会立即被覆盖。在pull之后,您将获得两个中的任何一个:

  1. 如果没有人(在mbVersion中)对您在wVersion中更改过的链接有效 - 您的拉动将会干净地(自动合并)应用于这些链接。
  2. 如果某些链接在mbVersion的最后一个pull之后的mbVersion中发生了变化 - 您将收到合并冲突。在这种情况下,只需告诉git保持本地更改。
  3. 注意我认为您的工作流程包含pull形式的mbVersion到wVersion,但不是另一种方式。如果你从wVersion {i}返回到mbVersion - 这种方法可能无效!

相关问题