介绍
本文是«使用 Git»系列文章的第三篇。本文假设您已阅读过安装文章和如何高效使用 Git 的文章。.
在版本控制系统领域,Git 无疑是灵活性方面最优秀的系统之一。它的语法非常容易学习,也很容易理解如何才能让 Git 更好地服务于你的工作流程和环境。.
本教程将教你如何创建两个分支(master 和 development),以及如何将开发分支中的代码合并到生产分支。.
分支本质上是一系列具有唯一名称的独特代码更改。每个代码仓库可以有一个或多个分支。.
默认情况下,第一个分支名为“master”。.
查看分支
创建新分支之前,我们需要查看所有现有分支。我们可以通过输入以下命令来查看所有现有分支:
git branch -a
在命令末尾添加“-a”告诉 GIT,我们要查看所有可用的分支,包括那些我们本地工作区中没有的分支。.
输出结果将类似于以下内容:
* master remotes/origin/master
输出结果第一行中“master”旁边的星号表示我们当前正在该分支上工作。第二行则表明我们的远程服务器上只有一个名为 origin 的分支,也称为 master。.
现在我们已经知道如何查看分支了,是时候创建我们的第一个分支了。.
创建分支
正如本文开头所述,我们希望为我们的编码环境建立一个开发环境和一个生产环境。.
我们希望将默认的«master»分支作为生产分支,因此我们需要创建一个单独的分支用于开发或预生产。.
要创建一个名为 develop 的新分支,请键入以下命令:
git checkout -b develop
假设我们还没有名为“development”的分支,则输出结果如下:
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 中。.
我们还需要提交这个文件,这将把这个文件附加到我们当前所在的“开发”分支。.
git commit -m "develop file" develop
该文件现在存在于开发分支中。正如我们即将发现的,它并不存在于主分支中。.
首先,我们需要确认当前是否在开发分支中。我们可以通过输入以下命令来完成此操作:
git branch
输出结果应与下图类似:
* develop master
我们已经知道,分支名称旁边的星号表示我们当前位于该分支上。.
运行“ls”命令后,我们可以看到这两个文件存在:
ls输出结果显示,我们找到了名为“file”和“develop”的两个文件:
develop file
合并分支之间的代码
有趣的部分发生在我们切换回原始分支之后,我们可以使用 git checkout 命令来实现这一点:
git checkout master
为了确保我们位于主分支上,我们可以输入以下命令:
git branch
输出结果会告诉我们当前所在的分支,用星号表示。.
develop * master
再次运行“ls”命令后,发现我们的新文件不见了。.
file它没有丢失——它在我们的开发分支中,而我们现在位于主分支。.
在我们的场景中,该文件代表对开发分支中所有已通过测试并准备好投入生产环境的文件所做的任何更改(或一个全新的文件)。在分支之间(通常是从开发分支到生产分支)移动代码的过程称为合并。.
合并时务必记住,我们要位于要合并到的分支上。.
在这种情况下,我们希望将开发分支(其中包含“develop”文件)合并到主分支。.
考虑到这一点,鉴于我们目前在主分支上,我们只需要运行合并命令即可。.
我们可以传递给合并命令的选项之一“--no-ff”表示我们希望 Git 保留合并之前的所有提交信息。这使得将来更容易跟踪更改。.
要将开发分支的更改合并到主分支,请键入以下命令:
git merge develop --no-ff
该命令的输出结果将类似于以下内容:
Merge made by the 'recursive' strategy. 0 files changed create mode 100644 develop
再次运行 ls 命令确认我们的“develop”文件现在位于我们的主分支中。.
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://[email protected]/repository 9af2dcb..53649cf master -> master
结果
按照以上教程,您应该已经搭建好了一个双分支工作流程,并且对 Git 中的分支机制有了更深入的了解。欢迎在评论区分享您的想法!









