使用 git 创建开发分支

creating a development branch with git

我有一个相当简单的网页设置。开发工作是在我的个人电脑上完成的。当我对自己拥有的东西感到满意时,我会推到 bitbucket。然后,我转到我的生产服务器,发出 git pull origin master 并且一切正常。

随着应用程序的成熟,我需要创建一个开发(或者更确切地说,暂存)分支,该分支也可在 Web 服务器上使用,附加到自己的数据库并可用于测试新功能。

所以,我(认为)我想做的是创建一个名为 staging 的新分支,并让它在网络服务器上占据一个单独的目录。我将有一个 .gitignore'd 环境文件,告诉它如何访问登台数据库。

一旦我对我在开发机器上所做的更改感到满意,我就会将它们推送到暂存区。然后,一旦它们在 "real" 世界中经过测试,我会将更改合并到 master 中,生产服务器将享受所有更新。

现在,我的问题:

  1. 如何创建一个本质上是 master 副本的新分支?
  2. 如何在 Web 服务器上创建一个新目录来保存此分支而不影响另一个目录中的 master 分支?
  3. 如何在不破坏staging分支的情况下将staging分支合并到master分支?

请注意,我已阅读 https://nvie.com/posts/a-successful-git-branching-model/,但我无法弄清楚我需要的 git 命令才能使它全部正常工作。

How do I create a new branch that is essentially a copy of master?

假设您目前在 master 分支,您可以通过 运行:

git checkout -b staging

这将创建一个名为 staging 的新分支,该分支基于您当前的分支。

How do I create a new directory on the web server to hold this branch without affecting the master branch which is in another directory?

最简单的方法就是创建存储库的另一个克隆,然后检查 staging 分支。例如:

git clone https://git.example.com/my/project staging
cd staging
git checkout staging

您可以使用 git clone-b 参数将其减少一步:

git clone -b staging https://git.example/com/my/project staging

在任何一种情况下,您最终都会得到一个名为 "staging" 的目录,其中包含从您的存储库中检出的 staging 分支。

另一种方法是使用 git worktree,但我认为这最终会更加复杂。

How do I merge the staging branch into the master branch without destroying the staging branch?

您通常会在本地主机上执行此操作,首先检查 master 分支,然后合并 staging 分支:

git checkout master
git merge staging

The Git Book 中涵盖了很多内容;如果您还没有阅读过,您可能想通读一下。