Skip to content

HEAD 先指向当前分支,分支再指向某次提交。建分支、切分支、合并、再删掉,是 Git 里最便宜的操作之一。

建、切、合、删 ​

bash
git switch -c dev
git switch main
git merge dev
git branch -d dev

git switch -c dev 等于「创建并切过去」。分支已存在时用 git switch dev。老命令是 git checkout -b / git checkout。

git branch 列出本地分支,当前分支前面有 *。

快进合并(fast-forward)只是把 main 的指针挪到 dev 的提交上,很快,但删掉 dev 之后,历史上几乎看不出曾经分过叉。要留合并记录:

bash
git merge --no-ff -m "merge dev" dev

会多一次 merge commit。发布分支合功能分支时,我更愿意用这个。

冲突 ​

两个分支改了同一文件的同一段,git merge 会停住。git status 会标出冲突文件,打开后能看到类似:

text
<<<<<<< HEAD
当前分支的内容
=======
进来的分支的内容
>>>>>>> other

改成你要的结果,去掉标记,再 git add、git commit。冲突不是 Git 坏了,是它拒绝替你猜。

手头改到一半,先去修别的 ​

bash
git stash
git stash list
git stash pop

stash 把工作区和暂存区收起来。pop 倒出来并丢掉这条 stash;想留着再用 git stash apply,完事再 git stash drop。多条 stash 时:

bash
git stash apply stash@{0}

修线上问题的常见顺序:stash → 从稳定分支拉修复分支 → 提交 → 合回去 → 删修复分支 → stash pop 接着干。只想把某一次修复拣到当前分支,用 git cherry-pick <commit>。

标签 ​

标签是给某次提交起的名字,常用来标版本:

bash
git tag v1.0.0
git tag v0.9 <commit>
git tag -a v0.1 -m "version 0.1" <commit>
git show v0.1
git push origin v1.0.0
git push origin --tags

删本地标签:git tag -d v1.0.0。删远端:git push origin --delete v1.0.0。

测试开发工程师 · 专注自动化与系统架构 | 邮箱: hansblog@atumsoul.win