如何使用Git分支

本教程将教您如何创建两个分支(主和开发)以及如何将代码从开发阶段合并到生产。

本文是“使用Git”系列中的第三部分。 它假定您已经阅读这两个安装的文章 ,并在文章如何有效地使用git

在版本控制系统的世界中,GIT可以说是灵活性方面最好的之一。 它很容易学习语法,并找出git如何最好地服务您的工作流和您的环境。

本教程将教您如何创建两个分支(主和开发)以及如何将代码从开发阶段合并到生产。

分支的核心是具有唯一名称的唯一一系列代码更改。 每个存储库可以有一个或多个分支。

默认情况下,第一个分支称为“主”。

查看分支

在创建新分支之前,我们希望看到所有存在的分支。 我们可以通过键入以下内容查看所有现有分支:

git branch -a

在命令末尾添加“-a”告诉GIT我们要查看所有存在的分支,包括我们在本地工作区中没有的分支。

输出将类似于以下内容:

* master
  remotes/origin/master

输出第一行中“master”旁边的星号表示我们当前在该分支上。 第二行简单地表示在我们的远程,命名起源,有一个单一的分支,也称为主。

现在我们知道如何查看分支,它时间创建我们第一个。

创建分支

如本文开头所述,我们希望为我们的编码环境进行开发和生产设置。

我们将把默认的“主”分支作为我们的生产,因此需要创建一个单独的分支用于开发或预生产。

要创建名为develop的新分支,请键入以下内容:

git checkout -b develop

假设我们还没有一个名为“develop”的分支,输出结果如下:

Switched to a new branch 'develop'

如果分支的名称已经存在,GIT会告诉我们:

fatal: A branch named 'develop' already exists.

您可以使用git checkout命令在两个分支之间来回切换:

git checkout master

要么

git checkout develop

假设您尝试切换的分支存在,您将看到类似于以下内容的输出:

Switched to branch 'master'

如果您尝试切换到不存在的分支,例如

git checkout nosuchbranch

Git会告诉你:

error: pathspec 'nosuchbranch' did not match any file(s) known to git.

现在我们有了多个分支,我们需要把它们好好使用。 在我们的场景中,我们将使用我们的“开发”分支来测试我们的更改,并使用主分支将它们发布给公众。

为了说明这个过程,我们需要切换回我们的开发分支:

git checkout develop

更改我们的开发分支

在这个分支上,我们将创建一个名为“develop”的新空白文件。 直到我们将它合并到主分支(在下一步),它不会存在那里。

touch develop 

正如在上一个教程中,我们需要告诉git我们要跟踪这个新文件。

我们可以添加“开发”文件,通过键入:

git add develop 

上述命令集将创建一个名为“develop”的空白文件,并将其添加到GIT。

我们还需要提交这个文件,这将附加这个文件到我们目前的分支,这是“开发”。

git commit -m "develop file" develop 

此文件现在存在于开发分支; 因为我们即将发现,它不存在于主分支。

首先,我们要确认我们目前在开发部门。 我们可以通过键入以下内容:

git branch 

输出应类似于以下内容:

* develop
  master

我们早些时候得知,分支名称旁边的星号表示我们目前在该分支上。

运行“ls”命令将显示这两个文件存在:

ls

输出将显示我们分别命名为“file”和“develop”的文件:

develop file

合并分支之间的代码

有趣的部分是在我们切换回我们的master分支之后,我们可以使用git checkout命令:

git checkout master

为了确保我们在主分支上,我们可以运行以下命令:

git branch 

输出将告诉我们哪个分支是一个,由星号表示。

  develop 
* master

再次运行“ls”,似乎我们的新文件丢失。

file

它不是缺失 - 它在我们的开发分支,我们在我们的主分支。

在我们的场景中,此文件表示已通过我们开发分支上的所有测试的任何文件(或整个新文件)的任何更改,并且已准备好投入生产。 移动分支之间的代码(通常从开发到生产)的过程称为合并

重要的是要记住合并时,我们希望在我们想要合并的分支上。

在这种情况下,我们要从我们的开发分支(其中存在“开发”文件)合并到我们的主分支。

牢记这一点,考虑到我们已经在主分支上,我们所要做的就是运行merge命令。

我们可以传递给merge命令的一个选项,即“--no-ff”,意味着我们希望git在合并之前保留所有的提交消息。 这将使跟踪更改在将来更容易。

要将更改从开发分支合并到主分支,请键入以下内容:

git merge develop --no-ff

命令的输出将类似于以下内容:

Merge made by the 'recursive' strategy.
 0 files changed
 create mode 100644 develop

再次运行ls命令将确认我们的“开发”文件现在在我们的主分支。

develop file

我们现在需要做的最后一件事,在我们的远程服务器上进行这种更改是推送我们的更改,我们可以借助git push命令的帮助。

git push

您将看到类似于以下内容的输出,确认您从开发分支到远程服务器上的主分支的合并:

Counting objects: 4, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 332 bytes, done.
Total 3 (delta 1), reused 0 (delta 0)
To ssh://git@git.domain.tld/repository
   9af2dcb..53649cf  master -> master

结论

通过遵循上面的教程,您应该有一个工作的双分支工作流设置,并希望有一个工作的理解,如何分支工作在GIT。 让我们知道你在评论中的想法!

作者:Jason Kurtz