使用 git 创建开发分支
creating a development branch with git
我有一个相当简单的网页设置。开发工作是在我的个人电脑上完成的。当我对自己拥有的东西感到满意时,我会推到 bitbucket。然后,我转到我的生产服务器,发出 git pull origin master
并且一切正常。
随着应用程序的成熟,我需要创建一个开发(或者更确切地说,暂存)分支,该分支也可在 Web 服务器上使用,附加到自己的数据库并可用于测试新功能。
所以,我(认为)我想做的是创建一个名为 staging
的新分支,并让它在网络服务器上占据一个单独的目录。我将有一个 .gitignore'd 环境文件,告诉它如何访问登台数据库。
一旦我对我在开发机器上所做的更改感到满意,我就会将它们推送到暂存区。然后,一旦它们在 "real" 世界中经过测试,我会将更改合并到 master 中,生产服务器将享受所有更新。
现在,我的问题:
- 如何创建一个本质上是 master 副本的新分支?
- 如何在 Web 服务器上创建一个新目录来保存此分支而不影响另一个目录中的 master 分支?
- 如何在不破坏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 中涵盖了很多内容;如果您还没有阅读过,您可能想通读一下。
我有一个相当简单的网页设置。开发工作是在我的个人电脑上完成的。当我对自己拥有的东西感到满意时,我会推到 bitbucket。然后,我转到我的生产服务器,发出 git pull origin master
并且一切正常。
随着应用程序的成熟,我需要创建一个开发(或者更确切地说,暂存)分支,该分支也可在 Web 服务器上使用,附加到自己的数据库并可用于测试新功能。
所以,我(认为)我想做的是创建一个名为 staging
的新分支,并让它在网络服务器上占据一个单独的目录。我将有一个 .gitignore'd 环境文件,告诉它如何访问登台数据库。
一旦我对我在开发机器上所做的更改感到满意,我就会将它们推送到暂存区。然后,一旦它们在 "real" 世界中经过测试,我会将更改合并到 master 中,生产服务器将享受所有更新。
现在,我的问题:
- 如何创建一个本质上是 master 副本的新分支?
- 如何在 Web 服务器上创建一个新目录来保存此分支而不影响另一个目录中的 master 分支?
- 如何在不破坏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 中涵盖了很多内容;如果您还没有阅读过,您可能想通读一下。