一 『现学现忘』Git分支 — 40、分支基本操作

目录

  • 1、创建分支
    • (1)创建分支
    • (2)图示理解
  • 2、查看分支列表
  • 3、分支切换
  • 4、查看所有分支的最后一个提交
  • 5、删除分支
1、创建分支(1)创建分支Git 是怎么创建新分支的呢?
很简单,就是要创建一个可以移动的新的指针 。
比如,创建一个testing分支, 你需要使用命令:git branch testing
示例:
# 1.查看本地版本库历史提交L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)$ git log --onelineb97ccfd (HEAD -> master) 第3次提交 , 新增内容:branch test v3f72a9fe 第2次提交,新增内容:branch test v2fa2439a 第1次提交,新增readme.txt文件# 2.新建分支testingL@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)$ git branch testing# 3.再次查看本地版本库历史提交L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)$ git log --onelineb97ccfd (HEAD -> master, testing) 第3次提交 , 新增内容:branch test v3f72a9fe 第2次提交 , 新增内容:branch test v2fa2439a 第1次提交,新增readme.txt文件可以看到(HEAD -> master, testing),说明本地版本库中,已经多了一个testing分支 。
(2)图示理解如上操作,会在当前所在的提交对象上创建一个新的指针 。
如下图:
一 『现学现忘』Git分支 — 40、分支基本操作

文章插图
那么Git 又是怎么知道当前在哪一个分支上呢? 也很简单 , 它有一个名为 HEAD 的特殊指针,HEAD指向当前所在的本地分支上 。
在本例中,是仍然在 master 分支上 。因为 git branch 命令仅仅 创建 一个新分支,并不会自动切换到新分支中去 。
因为上面日志信息:(HEAD -> master, testing),也说明HEAD指针指向的是master分支 。
如下图所示:
一 『现学现忘』Git分支 — 40、分支基本操作

文章插图
如图所示,当前 mastertesting 分支均指向校验和以 b97ccfd 开头的提交对象 。
2、查看分支列表执行命令:git branch 。不用加任何参数 。
如下图:
一 『现学现忘』Git分支 — 40、分支基本操作

文章插图
该命令会列出当前本地版本库中存在的所有分支,且当前正在工作的分支前会显示*
和命令行路径后面( )中的内容相对应 。
3、分支切换要切换到一个已存在的分支 , 你需要使用 git checkout branchname 命令 。
我们现在切换到新创建的 testing 分支去:
# 1.切换到testing分支上L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)$ git checkout testingSwitched to branch 'testing' # 提示:切换到分支“testing”# 2.查看当前正在工作的分支 。L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (testing) # 这里$ git branchmaster* testing# 这里现在 HEAD 就指向 testing 分支了 。(即:HEAD 会指向当前所在的分支)
一 『现学现忘』Git分支 — 40、分支基本操作

文章插图
【一 『现学现忘』Git分支 — 40、分支基本操作】提示:
在创建分支的时候 , 添加-b选项,可以直接切换到新创建的分支上 。
例如:git checkout -b testing
该命令等价于如下两条命令:
  • git branch testing:创建分支 。
  • git checkout testing:切换分支 。
4、查看所有分支的最后一个提交使用git branch -v命令可以查看,所有分支的最后一次提交 。
我们在testing 分支修改readme.txt文件,再进行一次提交 。
# 1.查看当前工作的分支L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (testing)$ git branchmaster* testing# 2.修改文件 , 提交新版本L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (testing)$ echo "branch test v4" >> readme.txtL@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (testing)$ git commit -a -m '第4次提交,新增内容:branch test v4'warning: LF will be replaced by CRLF in readme.txt.The file will have its original line endings in your working directory[testing 25f0827] 第4次提交,新增内容:branch test v4 1 file changed, 1 insertion(+)# 3.查看所有分支的最后一次提价L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (testing)$ git branch -vmasterb97ccfd 第3次提交 , 新增内容:branch test v3* testing 25f0827 第4次提交,新增内容:branch test v4# 4.查看版本库历史提交记录L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (testing)$ git log --graph --oneline* 25f0827 (HEAD -> testing) 第4次提交,新增内容:branch test v4* b97ccfd (master) 第3次提交,新增内容:branch test v3* f72a9fe 第2次提交 , 新增内容:branch test v2* fa2439a 第1次提交,新增readme.txt文件

推荐阅读