如何使用Git分支

来自菜鸟教程
(重定向自如何使用Git分支
跳转至:导航、​搜索

本文是“使用 Git”系列的第三篇。 它假设你已经阅读了安装文章如何有效使用git的文章

在版本控制系统领域,GIT 可以说是灵活性最好的系统之一。 学习语法并弄清楚 git 如何最好地服务于您的工作流程和环境非常容易。

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

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

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

查看分支

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

git branch -a

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

输出将类似于以下内容:

* master
  remotes/origin/master

输出第一行中“master”旁边的星号表示我们当前在该分支上。 第二行简单地表明在我们的远程,命名为 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 我们要跟踪这个新文件。

我们可以通过键入以下内容添加“develop”文件:

git add develop 

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

我们还需要提交这个文件,它会将这个文件附加到我们当前所在的分支,即“develop”。

git commit -m "develop file" develop 

该文件现在存在于开发分支上; 正如我们即将发现的那样,它在 master 分支上不存在。

首先,我们要确认我们目前在开发分支上。 我们可以通过键入以下内容来做到这一点:

git branch 

输出应类似于以下内容:

* develop
  master

我们之前了解到,分支名称旁边的星号表示我们当前在该分支上。

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

ls

输出将显示我们的两个文件,分别名为“file”和“develop”,被发现:

develop file

合并分支之间的代码

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

git checkout master

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

git branch 

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

  develop 
* master

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

file

它没有丢失——它在我们的开发分支上,我们在我们的主分支上。

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

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

在这种情况下,我们希望从存在“开发”文件的开发分支合并到我们的主分支。

记住这一点,考虑到我们已经在 master 分支上,我们所要做的就是运行 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 中的分支如何工作有一个有效的理解。 请在留言中让我们知道你的想法!

通过杰森库尔茨