git branch -我如何合并一个新的源代码更新,同时保持我在git中已有的修改



到目前为止,我一直在使用Git,它可以忍受简单的push和merge,但是我刚刚遇到了一个难题。我正在使用的源代码的开发人员刚刚发布了一个新版本作为源代码树。有几个文件被更改了,我很难弄清楚如何合并新的源代码,以便我可以将经过我修改的旧版本的代码保留为一个分支,例如1.0版本,而将经过相同修改的新版本的代码保留为另一个分支,例如2.0版本。我是唯一一个参与这个项目的人,所以如果我也想改写历史,我也不在乎。理想情况下,我希望能够继续进行修改,并使它们适用于两个版本。

你可以为你正在使用的库代码使用子模块,所以将能够在这个子模块中有2个早午餐(版本1.0和版本2.0),并为你的代码使用主分支。在这种情况下,当你的更改完成时,你可以通过在子模块

中切换分支来轻松地提供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

现在你可以通过

在version1和version2之间切换
cd /path/to/project/lib
git checkout version2
git checkout master

使用rebase的另一个变体(不推荐)。假设你有一个版本1为你的lib

的集合分支
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 

根据您的评论,我认为无论您选择哪种源代码控制系统,您都必须采取类似的方法。

将供应商的代码保存在一个存储库中,而将自己的代码保存在自己的存储库中。

如果您必须修补或更改供应商代码,那么在供应商存储库中维护变更管理。如果你得到一个新的供应商列表,那么,使用分支和标签来管理它。

如果你认为你有困难,因为你的目录树与供应商的代码和你自己的代码混合在一起,你需要找到一种方法来分离这两者。无论您使用什么源代码管理系统,这都是正确的。一种方法是使用符号链接将另一个目录中的供应商代码链接到您自己的repo中的目录中,并对repo中的供应商符号链接执行.gitignore。要切换供应商版本,你要进入供应商目录,并对所需的版本进行git签出。

最新更新