branch
除了 HEAD 外,Git 还有一种引用,叫做 branch(分支)。
你可以把一个 branch 理解为从初始 commit 到 branch 所指向的 当前 commit 之间的所有 commits 的一个「串」。
例如下面这张图:
master 的本质是一个指向 3 的引用,但也可以把 master 理解为是 1 2 3 三个 commit 的「串」,它的起点是 1,终点是 3。
- 所有的 branch 之间都是平等的。
例如上图 branch1 是 1 2 5 6 的串,而不要理解为 2 5 6 或者 5 6。上图中的 master 和 branch1 之间是平等的。
- branch 包含了从初始 commit 到它的所有路径,而不是一条路径。
如上图 master 在合并了 branch1 之后,从初始 commit 到 master 有了两条路径。这时,master 的串就包含了 1 2 3 4 7 和 1 2 5 6 7 这两条路径。
创建
如果你想创建 branch ,只需要输入一行 git branch 名称。
git branch feature1
你的 branch 就创建好了:
切换
新建的 branch 并不会自动切换,你的 HEAD 在这时依然是指向 main 的。
你需要用 checkout 来主动切换到你的新 branch 去:
git checkout feature1
git checkout -b 名称 指令可以把上面两步操作合并执行。这行指令可以帮你用指定的名称创建 branch 后,再直接切换过去。
删除
删除 branch 的方法非常简单:git branch -d 名称。
git branch -d feature1
需要说明的有两点:
- HEAD 指向的 branch 不能删除。如果要删除 HEAD 指向的 branch,需要先用 checkout 把 HEAD 指向其他地方。
- Git 中的 branch 只是一个引用,所以删除 branch 的操作也只会删掉这个引用,并不会删除任何的 commit。
main/master
main/master 是一个特殊的 branch:它是 Git 的默认 branch(俗称主 branch / 主分支)。
它主要有两个特点:
- 新创建的 repository 是没有任何 commit 的。但它创建第一个 commit 时,会把 main/master 指向它,并把 HEAD 指向 main/master。
- 当有人使用 git clone 时,除了从远程仓库把 .git 这个仓库目录下载到工作目录中,还会 checkout main/master。
checkout 的意思就是把某个 commit 作为当前 commit,把 HEAD 移动过去,并把工作目录的文件内容替换成这个 commit 所对应的内容。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论