本文是“使用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。 让我们知道你在评论中的想法!