537  字
  3  分钟 
  Git 分支 
 创建与切换分支
git branch查看所有分支和当前已激活分支git branch <branch>创建一个新分支git checkout <branch>切换至指定分支
由于
git checkout也可以用于恢复文件, 在 Git >= 2.23 版本, 提供了如下专用命令
git switch <branch>切换至指定分支 (Git >= 2.23)
注意: 在切换分支时, 工作区文件将会按照分支的最新提交被更改
未追踪的文件将不会发生变化
若位于暂存区的更改不会与目标分支冲突, Git 将允许切换分支, 这些更改会保留在新分支的工作区中
否则, Git 将会会阻止分支切换
合并分支
git merge <branch>将branch合并至当前分支 (不会删除branch), 运行会自动产生一次提交,git log --graph --oneline --decorate --all查看分支图
删除分支
git branch <flag> <branch>flag为-d时删除已经完成合并的branch,-D时强制删除branch无论其是否已被合并
分支冲突
若不同分支修改了同一文本文件的同一行 (或修改了同一二进制文件), 则会造成分支冲突
git merge <branch>自动合并失败后, 会在有冲突的文件内生成类似于如下格式的内容, 届时只要手动修改 (使用编辑器方可) 冲突内容, 后使用git add添加该文件至暂存区, 提交即可
<<<<<<< <current_branch>edition on `current_branch`=======edition on `branch`>>>>>>> <branch>git merge --abort终止当前的合并, 回退至合并前的当前分支的状态
回退和 Rebase
Rebase
在 a 分支上 git rebase b, 会将 a 分支与 b 分支的首个分叉点更新的 (不含分叉点) 所有 commit 变基 到 b 分支的最新 commit 后面
动画演示参见【GeekHour】一小时Git教程 p18 00:54 - 03:02
# aftera:5a:4b:2b:1a:3a:2a:1
-- 在 `a` 分支执行 `git rebase b` --
# beforea:5 b:2a:4 b:1a:3 /a:2a:1回退
更详细的笔记参见 Git 基本使用#回退版本与恢复文件
git checkout -b <branch> [<commit>]恢复至branch分支的commit的状态