我以前从未使用过git或任何其他版本控制。现在我有一个需要有稳定版本和开发版本的web项目,两个版本都运行在不同目录的同一台服务器上。
/var/www/afod/afod
/var/www/afod_dev/afod
现在我想使用git将dev-version中的更改同步到stable-version中,因为我以前从未使用过VC系统,所以我似乎无法做到这一点。
我在/var/www/afod/afod
中创建了一个git存储库,并通过以下方式将其克隆到dev目录中:
cd /var/www/afod_dev/afod
git clone /var/www/afod/afod
现在我有2个存储库,我希望在稳定版本端使用git pull保持同步。
我已经有2个分支机构,网络和开发。但是因为看起来git拉从两个分支的稳定版本同步。但我只想将更改同步到稳定版本,我已经将其合并到dev-version中的web分支。
我希望我能以某种方式指出我的问题。我似乎对git如何工作有一个基本的理解问题,但它似乎是做我想做的事情的正确软件。我基本上希望有一个分支自动同步到稳定版本和我合并到其中的其他分支。但是开发必须与稳定版本不同。
好吧,stable和dev托管在不同的apache vserver中的不同域下。在人们浏览网站时看到的目录中的dev-branch上工作是没有任何意义的。
所以我的想法是克隆存储库然后同步它们。
我在这里弄错了吗?你如何处理这样的配置?
答案 0 :(得分:4)
我认为你走在正确的轨道上,但是与分支的想法相混淆。您可以将分支可视化为树上的两个分支。两者都有相同的主干,源,但提示不同。 区别在于相同的代码库,可能是次要的或主要的。当您运行命令git checkout <branch_name>
时,您告诉git您希望树的不同提示处于活动状态,复制到工作目录。
在您的情况下,一个分支具有开发代码,另一个分支具有稳定的代码。要将dev
分支中的代码转换为web
分支,请使用git merge <branch_to_pull_in>
这将结合这两个分支的提示,使其内容相同。有关一般分支的更多信息,Here是一个通用的非git页面。
以下是可能适合您的解决方案。还有其他可能的工作流程,但这是最简单的工作流程之一。
将您的开发资源库克隆到/var/www/afod/afod
。而不是从/var/www/afod/afod
运行git checkout web
以及从您的展开文件夹中,确保您在dev
分支上。 git branch
应该有一行* dev
。
现在,您将同一存储库的两个不同分支签出到不同的子文件夹中。像你一样在dev中工作。一旦感觉稳定,就可以从dev文件夹中运行git checkout web
。比,git merge dev
。这会将这些更改合并到您的web
分支中。现在从/var/www/afod/afod
运行git pull
开始。这会将您的chnages拉入生产服务器。 dev
和网址都将被撤消,但只有签出的将会在您的工作目录中。
如果您想再次在dev分支中工作,请从dev文件夹中运行git checkout dev
。
答案 1 :(得分:0)
我认为稳定和开发应该是分支,而不是单独的存储库。
这是一个关于基本git以及简单工作流如何工作的优秀教程:http://www.ralfebert.de/tutorials/git/