改需求前想留条后路,执行 git branch 才发现本地只有 main,远端一堆分支。git新建分支其实就两行命令,关键是别在错误的分支上改完才想起来,也别直接在主分支上动手,回滚很麻烦。
创建和切换
Git 2.23 以后建议用 switch:git switch -c feature/login,创建并切过去;只想建不切,用 git branch feature/login。老版本或旧文章里的 git checkout -b feature/login 也能用。名字别用中文和空格,用 feature 加斜杠再跟英文短名,多数团队都能接受,纯中文分支名在部分平台会出问题。分支名里的斜杠只是命名习惯,Git 会按目录结构存,不影响功能。建完用 git branch 看一眼,前面带星号的就是当前分支。
推送到远端
本地分支建好,远端还看不到。第一次推送执行 git push -u origin feature/login,-u 把上游关联好,之后直接 git push。用 git branch -a 看全部分支,git status 确认当前在哪条上。拉取别人的新分支,先 git fetch,再 git switch 分支名。如果远端同名分支已存在,push 可能提示 rejected,先 fetch 看清差异,再决定合并还是换个名字,别直接加 -f 硬推。
删除和常见坑
合并完删本地分支:git branch -d feature/login,没合并会拒绝,确认不要了再用 -D。删远端分支:git push origin --delete feature/login。切换分支前有未提交改动,Git 会拦下来,先 commit 或 stash。建分支前最好先 git pull,不然基于旧代码开出来,后面合并冲突更多。删掉分支不会删掉已提交的内容,reflog 里还能找到记录,但别把它当后悔药,重要节点该打 tag 就打 tag。
日常开发,一个需求一条分支,合并后及时删。git新建分支不是难点,难的是命名和从哪条分支切出来,这两件事提前和团队对齐。改个错别字、调一行样式,也可以直接在当前分支处理完再推,不必事事开分支。