这是我的目标工作流程:
我有两个存储库。一个用于以PHP编码的网站框架,另一个用于自定义PHP代码,用于添加客户端所需的网站功能。
我需要能够从客户端网站的两个存储库中提取,但只能推送到一个,这将是自定义代码,我只希望第二个存储库保存自定义代码,而不是框架。
我怎样才能做到这一点?
我添加了两个存储库但它总是进行合并(因为我使用git pull
)但如果我只使用git remote update
我的文件不会更改。
我为设置采取的步骤:
远程:
mkdir ~/git/framework.git
cd ~/git/framework.git
git init --bare
mkdir ~/git/client1.git
cd ~/git/client1.git
git init --bare
本地:
mkdir ~/www/framework
cd ~/www/framework
git init
git remote add framework ssh://user@host/~/git/framework.git
mkdir ~/www/client1
cd ~/www/client1
git init
git remote add framework ssh://user@host/~/git/framework.git
git remote add client ssh://user@host/~/git/client1.git
这是我的本地客户端配置:
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
[remote "framework"]
url = ssh://user@host/~/git/framework.git
fetch = +refs/heads/*:refs/remotes/framework/*
[remote "client"]
url = ssh://user@host/~/git/client1.git
fetch = +refs/heads/*:refs/remotes/client/*
答案 0 :(得分:2)
对于您的模式,您可以按this answer (several suggestions)声明其中一个存储库为只读。然后,您可以使用git pull client
和git pull framework
进行同步,并使用git push client
来推送您的代码。要将client
设置为默认远程,您可以执行git branch --set-upstream-to client/master
(或者使用默认情况下要推送到的任何远程分支替换master)。
更常见的模式是使用分支来保持框架和客户端分离。这也意味着您只需要两个存储库:共享裸存储库和本地开发存储库。您可以从origin
拉出,其中包含两个主要分支framework
和client
。您可以选择从framework
合并到client
的内容,并且(几乎)永远不会从client
合并回framework
。