在 Git 中管理多个代码版本
Managing Multiple Versions of Code in Git
我有一个项目,目前正在使用 GitFlow 方法。我们最近得到了一个客户,他们将使用我们的代码库并进行一些针对他们的特定更改。
我想要做的是让他们的代码自动更新为在我们的 master 分支中实现的修补程序和功能,同时仍然将他们的代码分开并且所做的更改不会干扰 master 分支。
基本上是修补程序 -> 合并到 master/client 分支
此外,如果有任何方法可以将客户端代码视为一个单独的 repo,以便可以使用它设置一个开发分支,那就更好了,但它需要能够接收对master 分支也是如此。
实际上,使用 "fork" 的普通存储库听起来是个不错的选择。这是 GitHub 工作原理的基础。
在您的中央 Git 服务器上:
mkdir clients_repo.git
cd clients_repo.git
git init --bare
创建您的官方存储库的初始 "fork",这只会带来 "master" 分支:
git clone git@server/official_repo.git
cd official_repo
git remote add clients_repo git@server/clients_repo.git
git push clients_repo master
您可以在 clients_repo
中创建任意数量的分支。
在客户的存储库上工作:
git clone git@server/clients_repo.git
cd clients_repo
git remote add upstream git@server/official_repo.git
git fetch upstream
# create branches, edit, commit, merge, whatever
当需要将您的官方存储库中的更改集成到客户端的更改时,只需将 upstream/master
合并到您的 clients_repo 主分支中:
cd clients_repo
git checkout master
git fetch upstream
git merge upstream/master
# Resolve conflicts and commit if necessary
git push origin HEAD
我有一个项目,目前正在使用 GitFlow 方法。我们最近得到了一个客户,他们将使用我们的代码库并进行一些针对他们的特定更改。
我想要做的是让他们的代码自动更新为在我们的 master 分支中实现的修补程序和功能,同时仍然将他们的代码分开并且所做的更改不会干扰 master 分支。
基本上是修补程序 -> 合并到 master/client 分支
此外,如果有任何方法可以将客户端代码视为一个单独的 repo,以便可以使用它设置一个开发分支,那就更好了,但它需要能够接收对master 分支也是如此。
实际上,使用 "fork" 的普通存储库听起来是个不错的选择。这是 GitHub 工作原理的基础。
在您的中央 Git 服务器上:
mkdir clients_repo.git
cd clients_repo.git
git init --bare
创建您的官方存储库的初始 "fork",这只会带来 "master" 分支:
git clone git@server/official_repo.git
cd official_repo
git remote add clients_repo git@server/clients_repo.git
git push clients_repo master
您可以在 clients_repo
中创建任意数量的分支。
在客户的存储库上工作:
git clone git@server/clients_repo.git
cd clients_repo
git remote add upstream git@server/official_repo.git
git fetch upstream
# create branches, edit, commit, merge, whatever
当需要将您的官方存储库中的更改集成到客户端的更改时,只需将 upstream/master
合并到您的 clients_repo 主分支中:
cd clients_repo
git checkout master
git fetch upstream
git merge upstream/master
# Resolve conflicts and commit if necessary
git push origin HEAD