命令 | 创建分支 | 切分支 | 设置追踪 | 默认分支名 | 来源 | 引入年份 |
---|---|---|---|---|---|---|
git branch dev | ✅ | ❌ | ❌ | dev | HEAD | 2005(Git v1.0+) |
git branch -t dev origin/release | ✅ | ❌ | ✅ | dev | origin/release | 2005(Git v1.0+) |
git checkout -b dev | ✅ | ✅ | ❌ | dev | HEAD | 2005(Git v1.0+) |
git checkout -t origin/release | ✅ | ✅ | ✅ | release | origin/release | 2005(Git v1.0+) |
git fetch origin release:dev | ✅ | ❌ | ❌ | dev | origin/release | 2005(Git v1.0+) |
git switch -c dev | ✅ | ✅ | ❌ | dev | HEAD | 2019(Git v2.23+) |
git switch -t origin/release | ❌ | ✅ | ❌ | release | origin/release | 2019(Git v2.23+) |
创建但不切换到新分支
git branch
# zhang@zhangziwa MINGW64 /d/gitPrac/ckck (main)
$ git branch dev1 306e593
# zhang@zhangziwa MINGW64 /d/gitPrac/ckck (main)
$ git branch dev2 main
# zhang@zhangziwa MINGW64 /d/gitPrac/ckck (main)
$ git branch dev3 origin/main
# branch 'dev3' set up to track 'origin/main'.
# zhang@zhangziwa MINGW64 /d/gitPrac/ckck (main)
$ git branch dev4 origin/main^0
# zhang@zhangziwa MINGW64 /d/gitPrac/ckck (main)
$ git branch dev5
# $ git branch -vv
# dev1 306e593 Add pdf file
# dev2 306e593 Add pdf file
# dev3 306e593 [origin/main] Add pdf file
# dev4 306e593 Add pdf file
# dev5 306e593 Add pdf file
git branch -t
新建分支 并 track指定分支
# zhang@zhangziwa MINGW64 /d/gitPrac/ckck (main)
$ git branch -t dev origin/release
# branch 'dev' set up to track 'origin/release'.
# dev 277f35e [origin/release] new: 新建文件 111
# zhang@zhangziwa MINGW64 /d/gitPrac/ckck (main)
$ git branch -t origin/release
#⚠️branch 'origin/release' set up to track 'main'❗️.
# origin/release 306e593 [main] Add pdf file
# zhang@zhangziwa MINGW64 /d/gitPrac/ckck (main)
$ git branch -t dev1 release
# branch 'dev1' set up to track 'release'.
# dev1 277f35e [release] new: 新建文件 111
origin/release^0
,获取 origin/release 指向的 实际 commit 哈希值,如果 origin/release 不是一个有效的 commit(比如它不存在或不是一个 commit 类型的对象),Git 会报错。
创建并切换到新分支
git checkout -b
# zhang@zhangziwa MINGW64 /d/gitPrac/ckck (main)
$ git checkout -b dev1 306e593
# Switched to a new branch 'dev1'
# zhang@zhangziwa MINGW64 /d/gitPrac/ckck (dev1)
$ git checkout -b dev2 main
# Switched to a new branch 'dev2'
# zhang@zhangziwa MINGW64 /d/gitPrac/ckck (dev2)
$ git checkout -b dev3 origin/main
# Switched to a new branch 'dev3'
#⚠️branch 'dev3' set up to track 'origin/main'❗️.
# zhang@zhangziwa MINGW64 /d/gitPrac/ckck (dev3)
$ git checkout -b dev4 origin/main^0
# Switched to a new branch 'dev4'
# zhang@zhangziwa MINGW64 /d/gitPrac/ckck (main)
$ git checkout -b dev5
# Switched to a new branch 'dev5'
# $ git branch -vv
# dev1 306e593 Add pdf file
# dev2 306e593 Add pdf file
# dev3 306e593 [origin/main] Add pdf file
# dev4 306e593 Add pdf file
# * dev5 306e593 Add pdf file
git checkout -t
新建分支并建立track关系
$ git checkout -t origin/release
# Switched to a new branch 'release'
# branch 'release' set up to track 'origin/release'.
$ git checkout -t -b dev7 origin/release
# Switched to a new branch 'dev7'
# branch 'dev7' set up to track 'origin/release'.
# $ git branch -vv
# * dev7 277f35e [origin/release] new: 新建文件 111
# release 277f35e [origin/release] new: 新建文件 111
git switch -c
git switch -c
是 git checkout -b
的现代替代命令,旨在提供更清晰和专用的功能分离
$ git switch -c dev1 306e593
# Switched to a new branch 'dev1'
# zhang@zhangziwa MINGW64 /d/gitPrac/ckck (dev1)
$ git switch -c dev2 main
# Switched to a new branch 'dev2'
# zhang@zhangziwa MINGW64 /d/gitPrac/ckck (dev2)
$ git switch -c dev3 origin/main
# Switched to a new branch 'dev3'
#⚠️branch 'dev3' set up to track 'origin/main'.
# zhang@zhangziwa MINGW64 /d/gitPrac/ckck (dev3)
$ git switch -c dev4 origin/main^0
# Switched to a new branch 'dev4'
# zhang@zhangziwa MINGW64 /d/gitPrac/ckck (main)
$ git switch -c dev5
# Switched to a new branch 'dev5'
# $ git branch -vv
# dev1 306e593 Add pdf file
# dev2 306e593 Add pdf file
# dev3 306e593 [origin/main] Add pdf file
# dev4 306e593 Add pdf file
# * dev5 306e593 Add pdf file
git switch -t
新建分支并建立track关系
$ git switch -t origin/release
# Switched to a new branch 'release'
# branch 'release' set up to track 'origin/release'.
$ git switch -t -c dev origin/release
# Switched to a new branch 'dev'
# branch 'dev' set up to track 'origin/release'.
# $ git branch -vv
# * dev 277f35e [origin/release] new: 新建文件 111
# release 277f35e [origin/release] new: 新建文件 111
fetch最新代码并创建分支
git fetch origin release:dev1
$ git fetch origin release:dev1
# From gitcode.com:okinawa/ckck
# * [new branch] release -> dev1
# $ git branch -vv
# * dev 277f35e [origin/release] new: 新建文件 111