学习中心/工程实践/Git/Git 中级:开分支、合回来、碰上冲突怎么办
· Git · 中级
Git 中级:开分支、合回来、碰上冲突怎么办
会提交之后,日常单位是分支。stash、gitignore、冲突,都在这一层。

日常单位是分支,不是直接改 main
会提交、会推之后,不要再在 main 上直接干活。开一条分支,改完再合回去。别人也在推的时候,这条习惯能少很多事故。
- 开git switch -c
- 改add / commit
- 合git merge
- 清git branch -d
1. 开、切、看
- 从当前提交开一条叫 feat/login 的分支,并切过去
git switch -c feat/login - 回到 main。老写法是 git checkout
git switch main - 看本地有哪些分支,以及它们跟踪哪条远程
git branch -vv
名字写事由,不要叫 tmp、new、1。feat/、fix/ 这种前缀,一眼能看出来。
2. 合回去
先回到要放入的那条线,再 merge。合完、推完,再删已经没用的分支。
- 回到要合入的线
git switch main - 合之前先拿到别人刚推的
git pull - 把那条分支的提交接进当前线
git merge feat/login - 本地删掉。没合进去会拒绝,改用 -D 是强删
git branch -d feat/login
3. 冲突时怎么读
两边改了同一段,Git 会停下来。文件里 <<<<<<< / ======= / >>>>>>> 三行是边界,不是要留给用户看的。
- 看:哪些文件还没解决
git status - 改完、边界符号删干净,再 add 表示这文件解决了
git add README.md - 全部解决后再走完这次合并
git merge --continue
不要留着冲突标记提交。看不懂就 git merge --abort,回到合之前。
4. 先藏起来:stash
改到一半要去修别的,还没想提交。stash 把工作区藏进一个堆,干净了再取回来。
- 藏起来,含还没跟踪的新文件
git stash -u - 取回最近一次。有冲突就当普通冲突处理
git stash pop
5. 不要提交的东西
- 密钥、依赖、构建产物,写进 .gitignore
printf '%s\n' .env node_modules/ dist/ >> .gitignore - 已经提交过的,要从索引拿掉,不是只改 ignore
git rm --cached .env
6. 拉的时候带上 rebase
别人先推了,你再 pull,默认会多一个合并提交。日常短分支更常见的是:把你的提交接到最新的 main 后面。
- 先拿远程,再把你的提交接到后面
git pull --rebase - rebase 中途乱了,回到开始前
git rebase --abort
会开分支、会合、会处理冲突,日常就够用。改已经推上去的历史,看进阶篇。