3. 分支
3.1 创建分支
场景1:创建新分支
工作中遇到的使用方式:1.拉取新分支,2.做新需求 /修复BUG ,3.基于新分支提PR到目标分支
命令 | 作用 | 延展阅读 |
---|---|---|
git branch test1 | 1. 基于当前分支最新提交新建分支 test1 (但不会切换到test1 分支)2. 已存在同名分支则报错: a branch named 'test1' already exists 3. 没有关联的远程分支,故此分支依旧不可以直接执行 git push | 自证 |
git branch test2 125a1d15e | 功能如上 区别如下:基于指定提交创建新分支 | 自证 |
git checkout -b test2 | 1. 基于当前分支最新提交新建分支test2 ,并切换到test2 2. 已存在同名分支则报错: a branch named 'test2' already exists 3. 没有关联的远程分支,故此分支依旧不可以直接执行 git push | 自证 ☆☆☆☆☆ |
git checkout -b test2 125a1d15e | 功能如上 区别如下:基于指定提交创建新分支 | 自证 |
git fetch origin release:dev | 参考下文 fetch 详解 |
场景2:临时查看某个提交的内容
工作中遇到的使用方式:调查BUG时查看git提交历史,临时查看某个提交的代码
命令------------------------------------------------------------------------------- | 作用 | 延展阅读 |
---|---|---|
1. git checkout 125a1d15e 2. git switch -c test4 | 1.1. 新建临时分支(HEAD detached at e0c619c) 1.2.已存在同名分支则报错: a branch named 'test4' already exists 1.3. 没有关联的远程分支,故此分支依旧不可以直接执行 git push 2. 如果想保留这个临时分支,可执行此命令来创建新分支 test4 | 自证 |
1. git checkout origin/main 2. git switch -c test4 | 功能如上 区别如下:拉取远程main分支的最新提交 | 自证 |
场景3:远程分支拉到本地并 建立关联
工作中遇到的使用方式:不通过PR的方式合入代码。直接拉取分支→修改→push
命令 | 作用 | 延展阅读 |
---|---|---|
git checkout -t origin/release | (-t 即 --track) 1. 拉取 origin/release 到本地并创建release 分支2. git push 直接提交 | 自证 |
git checkout -b release origin/release git push | 1. 拉取origin/release 到本地并创建release 分支2. git push 直接提交 | 自证 ☆☆☆☆☆ |
git checkout -b test23 origin/release git push origin HEAD:release | 1. 拉取origin/release 到本地并创建test23 分支2. git push 因为名字不匹配,故报错3. 通过 git push origin HEAD:release 提交代码 | 自证 |
1. 远程仓库有test6 分支,本地没有2. git checkout test6 | 参考下文 分支切换 详解 | 自证 |
3.2 删除分支
场景1:删除本地分支 or 标签
命令----------------------------------------------------------------------------------------------------------------- | 作用 | 延展阅读 |
---|---|---|
git branch -d test1 | 只是删除了这个「引用」 而已,并不会删除任何 Commit-ID ;但是,如果一个 Commit-ID 没有被任何一个分支引用的话,在一定时间之后,将会被 Git 回收机制删除; | 自证 |
git branch -d -f test2 | 强制删除分支test2 | 自证 |
git branch -D test3 | 强制删除分支test2 | 自证 |
场景2:删除远程分支 or 标签
命令----------------------------------------------------------------------------------------------------------------- | 作用 | 延展阅读 |
---|---|---|
1. git branch -d -r origin/test1 2. git push origin :test1 | 1. 删除远程分支在本地的副本.git/refs/remotes/origin/test1 2. 删除远程分支 test1 注意此 push 操作中,会在分支名称前加一个 :前缀,以便通知远程仓库删除远端的与本地同名的分支 | 自证 |
git push origin --delete test33 | 删除远程分支test33 | 自证 ☆☆☆☆☆ |
3.3 远程分支重命名
命令-------------------------------------------------------------------------- | 作用 | 延展阅读 |
---|---|---|
1. git checkout old-name 2. git branch -m new-name 3. git push origin :old-name new-name | 1. check out the branch* 2. change local branch name *3. push local new-name to remote old-name and change the remote branch name | 链接 自证 |
3.4 查看分支
命令 | 作用 | 延展阅读 |
---|---|---|
git branch | 查看所有本地分支 | 自证 |
git branch -r | (-r 是 --remotes 的简写 )查看 所有远程分支 | 自证 |
git branch -a | (-a 是 --all 的简写 )查看 所有本地分支+所有远程分支 | 自证 |
git branch -v | 举例说明:test6 828852f msg | 自证 |
git branch -vv | 举例test6 62e5e7e [origin/test6] msg | 自证 |
3.5 切换分支
命令 | 作用 | 延展阅读 |
---|---|---|
git checkout master | 从当前分支切换到master 分支 | 自证 |
场景1:远程仓库有test6分支,本地没有同名分支,本地git checkout test6
会自动拉取远程分支test6并创建同名本地分支
命令------------------------------------------------------------------------------------------------------------------------ | 作用 | 延展阅读 |
---|---|---|
1. 远程仓库有test6 分支,本地没有2. git checkout test6 | 1. 自动拉取远程分支test6 并创建同名本地分支 2. .git/config 配置文件里会追加关联关系 [branch "test6"] ,此分支可以直接执行git push | 自证 |
1. 远程仓库有test6 分支,本地有test6 ,他们没有关联关系,恰巧重名时2. git checkout test6 | git push 会被拦截具体如何提交参考 push 命令 |
拓展:Git常用命令汇总