git 常用命令之 git branch

大家好,我是 17。

新建 git 分支

分支是并行开发的基础。分支名称的本质是对分支最后一个提交的引用。分支有多个,但 HEAD 只有一个,可以认为 HEAD 是"current branch"(当下的分支)。当你用git switch切换分支的时候,HEAD 重新指向新的分支。

分支是 git 的杀手级应用。Git 处理分支的方式可谓是难以置信的轻量,git 鼓励在工作流程中频繁地使用分支与合并,哪怕一天之内进行许多次。分支会涉及很多常用 git 命令,我们在这里一起讲。

分支的名称是一个引用,指向支持的最后一个提交节点。分支就是从父分支开始的第一个节点,到最后一个节点的所有 节点的集合。

当你新建仓库的时候,会默认建立 master 分支。

 git init test 
 git init

两种写法都可以。不同的是,git init test 会在当前目录下新建 test 文件夹,git init 会在当前目录初始化 git。

至于说建议用 main 而不是 master,其实就是名字,名字本无含意,在 git 中就是分支的名字而已,是看名字的人读出了所谓含意。如果在意名字,也是可以修改的。

git init -b main   用 -b 指定初始化的分支为 main 

也可以在全局指定,后面就不用 -b 指定了。

git config --global init.defaultBranch main

初始化完成后,新建其它的分支有三种方法。

git checkout -b dev
git switch -b dev
 
git branch dev

这三种方法都可以新建 dev 分支。不同的是前两种新建并转到新分支,最后一种只新建分支不跳转。

既然 git checkout -b devgit switch -b dev效果完全一样,为什么弄出两个来?开始都是用 git checkout -b,后来觉得用git checkout -b不够清晰,checkout被赋予了太多职责,所以增加了 switch 命令。

本地分支

列出,创建,或删除 branches。

git branch         列出
git branch dev     创建
git branch -d dev  删除

git branch -vv 

输出:
feature   3446d05 [origin/feature] feat:开发登录功能
* master  ad9da22 [origin/master: ahead 3, behind 2] Merge branch dev

* 代表 master 是当前分支。

origin/master 是远程分支,master 是 origin/master 的跟踪分支。

  • ahead 3: master 超前 origin/master 3 个提交
  • behind 2: master 落后 origin/master 2 个提交

你可能会迷惑,怎么又超前同时又落后呢? 其实并不矛盾。没有更新到远程的提交就是超前,没有同步到本地的提交就是落后。

删除远程分支

先删除远程分支

git branch -d origin feature

再删除本地跟踪的同名分支

git branch -d feature

注意:必须先切到其它分支,如果当前在 feature 分支,无法删除

如果 feature 没有合并到 master ,需要用 -D 强制删除

注意:建议不要删除远程分支,已经发布的分支如果删除了,可能会给别人造成影响。

猜你喜欢

转载自blog.csdn.net/m0_55635384/article/details/129020251