[英]GIT commit in two different source branches
我有2个分支: 开发和掌握 。 主人永远落后于发展 。 现在,我创建了一个名为new-branch的新分支 ,该分支本质上是开发的,但是具有不同的源层次结构(例如,Java包的命名已完全更改),但是功能/逻辑保持不变。 然后,我想在两个分支机构中继续发展一段时间。 我通常要做的是-将提交推入开发 ,然后将其挑选到新分支中 ,并修复所有可能的冲突。
问题1 :如果我确实需要保留两个分支,还有其他更好的方法吗? 合并/重新定位在这里似乎不起作用,因为它合并了整个源代码树。
现在,一段时间后,我决定开发分支可通过新的分支来代替。 以后对master也应该包含相同的更改。 我通常要做的是-删除development & master并重命名new-branch进行开发 ,并使master指向开发 。
问题2 :是否有更好的方法? 此时将它们合并在一起(合并新分支以进行开发 )是非常困难的,并且可能是不必要的-因此,我决定只是残酷地替换分支。
如果没有必要,请在git中进行版本控制。 您只需要忽略.gitignore
文件中的软件包 。
详细步骤如下:
touch .gitignore
创建一个.gitignore
文件。 为每个分支分别在.gitignore
添加软件包的文件/路径。
例如在develop
分支上,java包位于根存储库的a/b/*
中。 在new-branch
, c/d/*
java包。 您只需在.gitignore
添加相关文件/路径。
在develop
分支中, .gitignore
的内容应为: a/b/*
。 在new-branch
, .gitignore
的内容应为c/d/*
。
从版本控制历史记录中删除软件包。
在每个分支中,通过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.