基本的git理解问题

Sir*_*ggi 5 git

情况

我以前从未使用过git或任何其他版本控件.现在我有一个需要有稳定版本和开发版本的web项目,两者都运行在不同目录的同一台服务器上.

  • 稳定: /var/www/afod/afod
  • 发展: /var/www/afod_dev/afod

现在我想使用git将dev-version中的更改同步到stable-version中,因为我以前从未使用VC系统,所以我似乎无法完成此操作.

到目前为止我做了什么

我创建了一个git存储库,/var/www/afod/afod并通过以下方式将其克隆到dev目录中:

cd /var/www/afod_dev/afod
git clone /var/www/afod/afod
Run Code Online (Sandbox Code Playgroud)

现在我有2个存储库,我想在稳定版本端使用git pull保持同步.

问题

我已经有2个分支机构,网络和开发.但是因为看起来git拉从两个分支的稳定版本同步.但我只想将更改同步到稳定版本,我已经将其合并到dev-version中的web分支.

完全混乱

我希望我能以某种方式指出我的问题.我似乎对git如何工作有一个基本的理解问题,但它似乎是做我想做的事情的正确软件.我基本上希望有一个分支自动同步到稳定版本和我合并到其中的其他分支.但是开发必须与稳定版本不同.

关于Billy Moon的第一个答案

好吧,stable和dev托管在不同的apache vserver中的不同域下.在人们浏览网站时看到的目录中的dev-branch上工作是没有任何意义的.

所以我的想法是克隆存储库然后同步它们.

我在这里弄错了吗?你如何处理这样的配置?

And*_*ndy 4

分支机构

我认为你走在正确的道路上,但对分支的想法有点困惑。您可以将一个分支想象为树上的两个分支。两者具有相同的主干、,但提示不同。差异存在于相同的代码库之间,可能是次要的,也可能是主要的。当您运行该命令时,git checkout <branch_name>您告诉 git 您希望树的不同提示处于活动状态,并将其复制到工作目录中

在您的情况下,一个分支具有开发代码,另一个分支具有您的稳定代码。要将代码从dev分支获取到web分支中,您可以使用git merge <branch_to_pull_in> 这结合了这两个分支的提示,因此它们的内容是相同的。有关一般分支的更多信息,这里是一个通用的非 git 页面。

可能的解决方案

以下是一个可能适合您的解决方案。还有其他可能的工作流程,但这是最简单的工作流程之一。

将您的开发存储库克隆到/var/www/afod/afod. 与从/var/www/afod/afod运行内部git checkout web和开发文件夹中相比,确保您位于dev分支上。 git branch应该有这样的一行* dev

现在,您已将同一存储库的两个不同分支检出到不同的子文件夹中。尽你所能,做好开发工作。一旦您感觉它稳定了,请从您的 dev 文件夹中运行git checkout web. 比,git merge dev。这会将这些更改合并到您的web分支中。现在从内部/var/www/afod/afod运行git pull。这会将您的更改拉入生产服务器。和 web都将被拉过来,但只有签出的dev那个才会出现在您的工作目录中。

当您想再次在 dev 分支中工作时,请git checkout dev从 dev 文件夹中运行。