红茶的个人站点

  • 首页
  • 专栏
  • 开发工具
  • 其它
  • 隐私政策
Awalon
Talk is cheap,show me the code.
  1. 首页
  2. 开发工具
  3. 正文

Git 学习笔记 10:分支管理

2026年2月4日 3点热度 0人点赞 0条评论

分支管理

查看当前仓库的所有(本地)分支:

❯ git branch
  dev
  feature/1
  feature/2
* main
  release/260126
  temp-v1.0
  testing

这里的*标记的分支是当前生效的分支,即HEAD指针指向的分支。

可以使用-v查看每个分支最后一次提交记录:

❯ git branch -v
  dev            20631fd hello3
  feature/1      8b8dbd9 add school
  feature/2      1061ba5 add classRoom
* main           dfc886e [ahead 7] merged from feature/2
  release/260126 b31900f hello3
  temp-v1.0      624e587 add school
  testing        f030054 modify teacher

可以使用--merged查看已经合并到其它分支的分支:

❯ git branch --merged
  feature/1
  feature/2
* main
  release/260126

这些分支已经被合并过了,所以可以安全地使用git branch -d删除分支。

对应的,可以使用--no-merged查看还没有合并过的分支:

❯ git branch --no-merged
  dev
  temp-v1.0
  testing

没有合并果的分支不能使用git branch -d删除,如果要强行删除,可以使用git branch -D。

远程分支

查看可以使用的远程仓库列表:

❯ git remote
origin

远程仓库名称可以是任何名称,origin并没有特殊含义,只不过通过 git clone 创建的本地仓库默认使用origin 作为远程仓库名称。

查看远程仓库的详细内容:

❯ git remote show origin
* remote origin
  Fetch URL: git@github.com:icexmoon/learn-git.git
  Push  URL: git@github.com:icexmoon/learn-git.git
  HEAD branch: main
  Remote branches:
    dev            tracked
    main           tracked
    release/260126 tracked
  Local branches configured for 'git pull':
    dev            merges with remote dev
    main           merges with remote main
    release/260126 merges with remote release/260126
  Local refs configured for 'git push':
    dev            pushes to dev            (up to date)
    main           pushes to main           (fast-forwardable)
    release/260126 pushes to release/260126 (up to date)

被跟踪的远程分支存在一个本地的跟踪分支,跟踪分支使用<remote>/<branch>方式命名,比如:

❯ git branch -a
  dev
  feature/1
  feature/2
* main
  release/260126
  temp-v1.0
  testing
  remotes/origin/HEAD -> origin/main
  remotes/origin/dev
  remotes/origin/main
  remotes/origin/release/260126

这里的origin/dev、origin/main、origin/release/260126都是跟踪分支。

这里用main分支以及对应的跟踪分支和远程分支进行举例,说明它们的关系。如果刚从远程仓库拉取该分支,它们的状态如下:

image-20260204144159769

每个分支是完全一致的,指向相同的提交记录。

如果本地分支和远程分支都追加了新的提交记录:

image-20260204145633028

可以通过另一个本地仓库模拟其他人提交到远程仓库。

可以看到跟踪分支是落后于本地分支的:

image-20260204145822910

并且因为没有从远程仓库同步,跟踪分支并没有反映远程仓库上的最新提交记录。

从远程仓库拉取 main 分支的最新提交记录:

❯ git fetch origin main

再次查看日志:

image-20260204150012284

可以看到跟踪分支和本地分支分叉了。可以用下图表示:

image-20260204150242494

当然,现在你需要合并分支并后再推送到远程仓库:

❯ git merge origin/main
❯ git push
  • 当然,使用git pull在拉取代码的同时进行合并会更为简单。

  • 通过 rebase 的方式合并的代码会让历史记录变成线性,更为优雅。

推送后的分支情况:

image-20260204151523921

跟踪分支

通过 git clone 方式建立的本地仓库,git 会自动生成跟踪分支,并和本地分支关联。

查看本地分支和跟踪分支的关联情况:

❯ git branch -vv
  dev            20631fd [origin/dev] hello3
  feature/1      8b8dbd9 add school
  feature/2      1061ba5 add classRoom
* main           81a4599 [origin/main] Merge remote-tracking branch 'origin/main'
  release/260126 b31900f [origin/release/260126] hello3
  temp-v1.0      624e587 add school
  testing        f030054 modify teacher

在本地创建的新分支需要手动关联:

❯ git branch tmp-main
❯ git checkout tmp-main
❯ git branch -u origin/main

这种操作很常见,因此 git 提供更方便的命令,在创建新分支的同时关联跟踪分支:

❯ git checkout -b tmp-main origin/main
branch 'tmp-main' set up to track 'origin/main'.
Switched to a new branch 'tmp-main'

删除远程分支

删除本地分支并不会影响远程分支:

❯ git branch -d release/260126
Deleted branch release/260126 (was b31900f).

如果需要将远程仓库上的分支也删除掉:

❯ git push origin --delete  release/260126
To github.com:icexmoon/learn-git.git
 - [deleted]         release/260126

The End.

参考资料

  • 3.5 Git 分支 - 远程分支

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: git
最后更新:2026年2月4日

魔芋红茶

加一点PHP,加一点Go,加一点Python......

点赞
< 上一篇

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

COPYRIGHT © 2021 icexmoon.cn. ALL RIGHTS RESERVED.
本网站由提供CDN加速/云存储服务

Theme Kratos Made By Seaton Jiang

宁ICP备2021001508号

宁公网安备64040202000141号