git:分支
分支命名
- 可以使用斜杠(/)构建分层命名方案
- 不能以减号(-)开头,分层的命名不能以点(.)开头
- 不能使用连接两个点(.)
- 不能包括空格或其他空白字符以及~ ^ : ? * [
列出分支名称
- git branch 列出本地版本库的分支
- git branch -r 列出远程跟踪分支
- git branch -a 列出本地版本库的分支和远程跟踪分支
查看分支提交
- git show-branch 列出本地版本库的分支
- git show-branch -r 列出远程版本库分支
- git show-branch -a 列出本地版本库的分支和远程版本库分支
- git show-branch 分支名 列出指定分支的提交,可以使用一组分支名或通配符*
创建分支
git branch 分支名称 {starting-commit}
- 在指定的提交上创建一个命名分支
- 若不指定提交,默认使用当前分支上的最近提交
- 仅创建分支,不改变工作目录
检出分支
git checkout 分支名称
- 将HEAD指向检出分支
- 将索引重置为检出分支最新提交点
- 更新工作目录
检出时工作目录变更
未跟踪的文件:
- 在检出分支中不存在,保留不变
- 在检出分支中存在(即使内容一样),警告并阻止检出分支
已跟踪-已提交过的文件:已修改且已提交 或 未修改
- 在检出分支不存在,从工作目录和暂存区删除
- 在检出分支中存在,使用检出分支的版本替换工作目录和暂存区版本
已跟踪-已提交过的文件:已修改且未提交
- 警告并阻止检出分支
已跟踪-从未提交过的文件(当前分支的任何提交内都无此文件版本)
- 工作目录和暂存区保留不变
处理方式:
- 提交变更到当前分支
- 合并变更到检出分支:git checkout -m
无头状态
HEAD指针直接指向一个提交,而不是一个分支的名称。
什么情况下处于无头状态:
- 检出不是分支头部的提交:git checkout 提交
- 检出标签引用的提交
- 等
影响:
- 可以正常提交,但没有分支记录,
- 当再使用git checkout branch检出分支后,该提交会丢失
- 可以使用git checkout -b new_branch新建个分支记录此提交
删除分支
git branch -d 分支名称
- 技术上仅仅删除了分支名称(指向分支最近的提交)
- 不允许删除当前分支