繁体   English   中英

GIT在两个不同的源分支中提交

[英]GIT commit in two different source branches

我有2个分支: 开发掌握 主人永远落后于发展 现在,我创建了一个名为new-branch的新分支 ,该分支本质上是开发的,但是具有不同的源层次结构(例如,Java包的命名已完全更改),但是功能/逻辑保持不变。 然后,我想在两个分支机构中继续发展一段时间。 我通常要做的是-将提交推入开发 ,然后将其挑选到新分支中 ,并修复所有可能的冲突。

问题1 :如果我确实需要保留两个分支,还有其他更好的方法吗? 合并/重新定位在这里似乎不起作用,因为它合并了整个源代码树。

现在,一段时间后,我决定开发分支可通过新的分支来代替。 以后对master也应该包含相同的更改。 我通常要做的是-删除developmentmaster并重命名new-branch进行开发 ,并使master指向开发

问题2 :是否有更好的方法? 此时将它们合并在一起(合并新分支以进行开发 )是非常困难的,并且可能是不必要的-因此,我决定只是残酷地替换分支。

如果没有必要,请在git中进行版本控制。 您只需要忽略.gitignore文件中的软件包

详细步骤如下:

  1. 在每个分支中,通过touch .gitignore创建一个.gitignore文件。
  2. 为每个分支分别在.gitignore添加软件包的文件/路径。

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

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

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

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

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

如果需要对软件包进行版本控制,则可以使用cherry-pick将最新更改应用于另一个分支。 或合并/重新设置分支到另一个分支。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM