GIT提交两个不同的源分支

时间:2017-08-02 09:10:58

标签: git version-control merge

我有两个分支: develop & Master 始终落后于 develop 。现在我创建了一个名为 new-branch 的新分支,它本质上是 develop 但具有不同的源层次结构(例如,Java包命名完全改变了),但功能/逻辑保持原样。然后我想在两个分支中继续开发一段时间。我通常做的事情 - 将提交提交到 develop 然后将其选择到 new-branch ,并修复任何可能的冲突。

问题1 :如果我真的需要保留两个分支,有没有更好的方法呢?合并/变基似乎在这里不起作用,因为它合并了整个源树。

过了一段时间,我决定将 develop 分支替换为 new-branch 。后来在master上也应该包含相同的更改。我通常做的 - 只需删除 develop & master 并将 new-branch 重命名为 develop ,并将主要点指向 develop

问题2 :有更好的方法吗?将它们合并在一起(将 new-branch 合并到 develop )是非常困难的,而且可能是不必要的 - 所以我决定只是粗暴地替换分支。

1 个答案:

答案 0 :(得分:1)

如果不需要版本控制它们在git中。您只需要忽略.gitignore文件中的软件包。

详细步骤如下:

  1. 在每个分支中,按.gitignore创建touch .gitignore文件。
  2. .gitignore中为每个分支单独添加软件包的文件/路径。

    例如在develop分支上,java包位于根目录的a/b/*。在new-branch上,java包位于c/d/*。您只需在.gitignore中添加相关文件/路径。

    develop分支中,.gitignore的内容应为:a/b/*。在new-branch中,.gitignore的内容应为c/d/*

  3. 在每个分支上提交更改。
  4. 从版本控制历史记录中删除软件包。

    在每个分支中,按.gitignore删除您在git remove /path/or/file --cached中添加的包文件/路径。

    例如在develop分支上,您可以使用git rm a/b/* --cached。在new-branch上,您可以使用git rm c/d/* --cached

  5. 如果您需要对软件包进行版本控制,可以使用cherry-pick将最新更改应用于另一个分支。或者将分支合并/转换为另一个分支。