我有两个分支: 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 )是非常困难的,而且可能是不必要的 - 所以我决定只是粗暴地替换分支。
答案 0 :(得分:1)
如果不需要版本控制它们在git中。您只需要忽略.gitignore
文件中的软件包。
详细步骤如下:
.gitignore
创建touch .gitignore
文件。在.gitignore
中为每个分支单独添加软件包的文件/路径。
例如在develop
分支上,java包位于根目录的a/b/*
。在new-branch
上,java包位于c/d/*
。您只需在.gitignore
中添加相关文件/路径。
在develop
分支中,.gitignore
的内容应为:a/b/*
。在new-branch
中,.gitignore
的内容应为c/d/*
。
从版本控制历史记录中删除软件包。
在每个分支中,按.gitignore
删除您在git remove /path/or/file --cached
中添加的包文件/路径。
例如在develop
分支上,您可以使用git rm a/b/* --cached
。在new-branch
上,您可以使用git rm c/d/* --cached
。
如果您需要对软件包进行版本控制,可以使用cherry-pick将最新更改应用于另一个分支。或者将分支合并/转换为另一个分支。