学习中心/工程实践/Git/Git 中级:开分支、合回来、碰上冲突怎么办

· Git · 中级

Git 中级:开分支、合回来、碰上冲突怎么办

会提交之后,日常单位是分支。stash、gitignore、冲突,都在这一层。

正在加载录音…

日常单位是分支,不是直接改 main

会提交、会推之后,不要再在 main 上直接干活。开一条分支,改完再合回去。别人也在推的时候,这条习惯能少很多事故。

  1. 开git switch -c
  2. 改add / commit
  3. 合git merge
  4. 清git branch -d

1. 开、切、看

  • 从当前提交开一条叫 feat/login 的分支,并切过去git switch -c feat/login
  • 回到 main。老写法是 git checkoutgit 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. 不要提交的东西

  • 密钥、依赖、构建产物,写进 .gitignoreprintf '%s\n' .env node_modules/ dist/ >> .gitignore
  • 已经提交过的,要从索引拿掉,不是只改 ignoregit rm --cached .env

6. 拉的时候带上 rebase

别人先推了,你再 pull,默认会多一个合并提交。日常短分支更常见的是:把你的提交接到最新的 main 后面。

  • 先拿远程,再把你的提交接到后面git pull --rebase
  • rebase 中途乱了,回到开始前git rebase --abort

会开分支、会合、会处理冲突,日常就够用。改已经推上去的历史,看进阶篇。

同模块

工程实践 →