Git 教程 - 版本分支

Jinku Hu 2023年1月30日 2018年8月15日
  1. 为什么需要分支
  2. 创建新分支
  3. 删除分支
  4. 同时创建并切换成新分支
Git 教程 - 版本分支

在本教程中,我们将了解 git 版本控制系统中最重要的一个功能 - 分支。

为什么需要分支

到目前为止,我们只在一个分支上工作 - master 分支,它是我们创建新存储库时的默认分支。

一般来说,master 分支代表着代码的稳定版本,它一般是可以发布的代码。出于这个原因,我们真的不想在主分支上进行新功能的代码开发,以防它把代码搞乱。

我们真正想要做的是,如果我们想为我们的应用程序添加一个新功能,那我们就来创建一个隔离的环境来试验这个新功能,直到它最后完成并且测试通过,我们可以将这个新功能合并到 master 分支。

我们不向主分支添加更多提交,而是将新分支作为隔离环境工作并测试新功能。

创建新分支

$ git branch test_branch

当我们创建 test_branch 分支时,我们做的是其实是将 master 分支的代码状态复制到新分支的开始,然后我们可以在这个 test_branch 分支中工作。

你可以通过 git branch 列出工作区上的可用分支,

$ git branch
* master
  test_branch

此处列出了新创建的 test_branch,以及 master 主分支。

但是现在,工作区仍然在主分支上,尽管你刚刚创建了新分支。*号后面的分支是当前的工作分支。

你需要切换到新分支才能开始在此分支上工作,

$ git checkout test_branch
Switched to branch 'test_branch'
D       test1_rename.txt

它说现在它被切换到 test_branch 分支,如果你再做一次 git branch

$ git branch
  master
* test_branch

然后我们将看到我们现在在 test_branch 分支,因为星号*已经在 test_branch 之前而不再是 master 之前。

让我们添加一些文本到文件 test3.txt 中,比如 This is the added line in branch test_branch.

现在,如果我们来查看 git status,你会发现 Git 已经发现了此文件修改。

$ git status
On branch test_branch
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

	modified:   test3.txt

no changes added to commit (use "git add" and/or "git commit -a")

我们可以将这些更改提交到版本库中,具体的方法我们已经在上节中介绍过了。

我们所做的是我们创建了这个新分支并进行了一些与 master 分支隔离的更改。master 分支中的代码保持不变

删除分支

在我们对添加到分支的新功能感到满意之后,我们可以将其删除。

$ git checkout master
$ git branch -d test_branch
error: The branch 'test_branch' is not fully merged.
If you are sure you want to delete it, run 'git branch -D test_branch'.

branch 后面的 -d 参数表示它将删除指定的分支。

在这里,我们会看到一个错误说 The branch 'test_branch' is not fully merged. If you are sure you want to delete it, run 'git branch -D test_branch'.。小写 d 仅在我们已经合并分支后才起作用,但大写 D 可以强制删除分支。我们将在接下来的章节中介绍如何合并分支,但是现在,让我们使用大写 D 来强制删除这个分支。

$ git branch -D test_branch
Deleted branch test_branch (was 7d6bca6).

如果你现在检查工作区的可用分支,它显示只有 master 分支了。

$ git branch
* master

同时创建并切换成新分支

上面介绍的工作流程是首先通过 git branch 来创建分支,然后使用 git checkout 来将工作区切换成此分支。

我们还有一种更快捷的方法将这两个步骤合二为一。

$ git checkout -b new_test_branch
Switched to a new branch 'new_test_branch'
M       test3.txt

它的作用是创建一个分支并自动切换成此分支。因此,我们不必单独执行上面的两步走。

Author: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn