到目前为止,我一直在使用Git,它对于简单的推送和合并是可以容忍的,但我只是向我扔了一个曲线球。我正在使用的源代码的开发人员刚刚发布了一个新版本作为源代码树。几个文件已被更改,我很难弄清楚如何合并新的源代码,以便我可以将我的修改代码的旧版本作为一个分支保留,例如版本1.0,以及具有相同代码的新版本的代码修改为另一个分支,比如版本2.0。我是唯一一个从事这个项目的人,所以如果我有的话,我也不在乎重写历史。理想情况下,我希望能够继续进行修改并将它们应用于两个版本。
答案 0 :(得分:1)
您可以将子模块用于您正在使用的库的代码,因此可以在此子模块(版本1.0和版本2.0)中使用2个早午餐,并为您的代码使用主分支。在这种情况下,当您进行更改时,只需切换子模块中的分支,就可以轻松地为它们提供版本1.0和版本2.0
代码示例
cd /path/to/project/
mv lib /some/other/location/
git rm lib
git commit -m'move lib to submodule'
cd /some/other/location/lib
git init
git add .
git commit
cd /path/to/project/
git submodule add /some/other/location/lib
git commit -m'add submodule'
cd /some/other/location/lib
git checkout -b version2
do some modifications
git commit -m'version2'
cd /path/to/project/lib
git fetch --all
现在您可以通过
简单地在版本1和版本2之间切换cd /path/to/project/lib
git checkout version2
git checkout master
使用rebase的另一种变体(不推荐)。假设你有自己的版本1的集合分支
git checkout -b version2
apply changes in you lib wich will bring it to version 2.
git commit
git checkout master
现在在master中做你的工作(提交一些东西)。要查看版本2分支中的主更改,请执行
git checkout version2
git rebase master
答案 1 :(得分:0)
根据您的意见,我认为无论您选择哪种源代码控制系统,都必须采用类似的方法。
将供应商代码保存在一个存储库中,并将您自己的代码保存在自己的存储库中。
如果必须修补或更改供应商代码,请在供应商存储库中维护变更管理。如果您获得新的供应商,请使用分支和标签在供应商仓库中管理它。
如果您认为您遇到困难,因为您的目录树与供应商代码和您自己的代码混合在一起,您需要找到一种方法将两者分开。无论您使用什么源代码管理系统,都是如此。一种方法是使用符号链接将另一个目录中的供应商代码链接到您自己的仓库中的目录中,并在您的仓库中为该供应商符号链接执行.gitignore。要切换供应商版本,请转到供应商目录并执行所需版本的git checkout。