Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 从多个位置拉动,只推到一个位置_Git - Fatal编程技术网

Git 从多个位置拉动,只推到一个位置

Git 从多个位置拉动,只推到一个位置,git,Git,以下是我的工作流程: 我有两个存储库。一个用于用PHP编码的网站框架,另一个用于定制PHP代码,用于添加客户端想要的网站功能 我需要能够从客户端网站的两个存储库中提取,但只推送到一个,这将是自定义代码,我只希望第二个存储库保存自定义代码,而不是框架 我怎样才能做到这一点 我添加了两个存储库,但它总是进行合并(因为我使用的是git pull),但如果我只使用git remote update,我的文件不会更改 我为设置所采取的步骤: 远程: mkdir ~/git/framework.git c

以下是我的工作流程:

我有两个存储库。一个用于用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/*

对于您的模式,可以根据将其中一个存储库声明为只读。然后可以使用
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
我支持你。哈哈。不幸的是,这个模型就是给我的。我将试着说服他按照我目前设置的方式来做,即将
框架
重定为
客户端
。看起来效果不错。