Git 从多个位置拉动,只推到一个位置
以下是我的工作流程: 我有两个存储库。一个用于用PHP编码的网站框架,另一个用于定制PHP代码,用于添加客户端想要的网站功能 我需要能够从客户端网站的两个存储库中提取,但只推送到一个,这将是自定义代码,我只希望第二个存储库保存自定义代码,而不是框架 我怎样才能做到这一点 我添加了两个存储库,但它总是进行合并(因为我使用的是Git 从多个位置拉动,只推到一个位置,git,Git,以下是我的工作流程: 我有两个存储库。一个用于用PHP编码的网站框架,另一个用于定制PHP代码,用于添加客户端想要的网站功能 我需要能够从客户端网站的两个存储库中提取,但只推送到一个,这将是自定义代码,我只希望第二个存储库保存自定义代码,而不是框架 我怎样才能做到这一点 我添加了两个存储库,但它总是进行合并(因为我使用的是git pull),但如果我只使用git remote update,我的文件不会更改 我为设置所采取的步骤: 远程: mkdir ~/git/framework.git c
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/*
对于您的模式,可以根据将其中一个存储库声明为只读。然后可以使用
git pull-client
和git pull-framework
进行同步,并使用git push-client
推送代码。要将client
设置为默认远程,您可以执行git branch——将上游设置为client/master
(或者将master替换为默认情况下要推送到的任何远程分支)
一种更常见的模式是使用分支将框架和客户机分开。这也意味着您只需要两个存储库:共享的裸存储库和本地开发存储库。您可以从
origin
,它有两个主要分支,framework
和client
。您可以选择从框架
合并到客户端
,并且您(几乎)永远不会从客户端
合并到框架。。@真的,我看了,没有看到任何对我有帮助的东西……因此在这些类型的问题中,没有现成的解决方案。你必须自己发明它。Bash脚本和git挂钩可能会有所帮助。(我的意图并不是说)Git很有趣。特别是因为你有多台机器。我的建议是找一个12包的红牛坐下来,为你的应用程序设计一个构建系统。@PaulHicks任何可以为该设计提供更多细节的博客帖子?如果我理解正确,当按照你解释的方式使用分支时,这意味着客户分支将在其中包含框架和自定义代码,正确的?我必须和我的第二个开发人员谈谈我们是否应该这样做。我刚刚想到的另一件事是我们将有多个客户端,因此必须有一个框架,客户端1
,客户端2
,客户端3
,等等分支。这对我们不起作用。Git非常擅长拥有很多分支。但只要对你有用。对我来说,单个部署工作来自单个存储库,无论这意味着单个库还是4个应用程序。但git是灵活的,可以以任何方式工作。感谢您与我分享您对git的知识,以我能理解的方式。我只使用Git几天,我真的很喜欢它。比Subversion更容易使用。我唯一的一个问题是Git需要2个命令来更新存储库(Git commit
然后Git push
),而不是svn commit
我支持你。哈哈。不幸的是,这个模型就是给我的。我将试着说服他按照我目前设置的方式来做,即将框架
重定为客户端
。看起来效果不错。