这是我想要的工作流程:
我有两个存储库。一个用于用 PHP 编码的网站框架,另一个用于自定义 PHP 代码,以添加客户想要的网站功能。
我需要能够从客户端网站的两个存储库中提取数据,但只能推送到一个存储库,即自定义代码,并且我只希望第二个存储库保存自定义代码,而不是框架。
我怎样才能实现这个目标?
我添加了两个存储库,但它总是进行 merge (因为我使用git pull
),但如果我只使用git远程更新
,我的文件不会更改。
我采取的设置步骤:
远程:
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/*
最佳答案
对于您的模式,您可以将其中一个存储库声明为只读,如 this answer (several suggestions) 。然后您可以使用git pull client
和git pull Framework
进行同步,并使用git push client
来推送您的代码。要将 client
设置为默认远程,您可以执行 gitbranch --set-upstream-to client/master
(或将 master 替换为您想要推送到的任何远程分支默认情况下)。
更常见的模式是使用分支将框架和客户端分开。这也意味着您只需要两个存储库:共享裸存储库和本地开发存储库。您可以从origin
pull ,它有两个主要分支:framework
和client
。您可以选择将哪些内容从 framework
merge 到 client
,并且您(几乎)永远不会从 client
merge 回 framework
.
关于git - 从多个 pull ,仅 push 一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25213780/