checkout 切换/创建分支
最后更新于:2022-04-02 02:52:52
[TOC]
## 用法
### 切换分支
```
git checkout
```
### 创建并切换分支
```
git checkout -b
```
等效于
```
git branch
git checkout
```
### 强制切换分支
如果创建存在同名分支,`-b`会报错, `-B`会强制覆原同名分支
```
git checkout -B
```
### 切换新分支为远程分支
```
// 拉取并切换同名的远程分支
> git checkout -t origin/release
// 可以指定名称
> git checkout -b origin/newBranch
```
### 创建空分支
没有commit历史记录,是一个完全独立背景干净的分支
```
> git checkout --orphan
// 此时内容已经为无历史的仓库
// 可以使用 git rm -rf 删除不需要的文件
// 甚至可以 git rm -rf . 删除所有文件
并提交
> git commit -am "xxx"
```
### 带修改内容切换分支
```
git checkout --merge
```
在切换分支时,连修改内容一并带过去
注意:
1. 如果当前分支和切换分支间的内容不同的话,容易造成冲突。
2. 切换到新分支后,当前分支修改过的内容就丢失了。
### 交互显示与另一分支的区别
可以在交互时界面中进行合并
```
>git checkout -p master_no_saas
...
IX' => '.html', // 设置静态缓存文件后缀
+ 'HTML_CACHE_RULES' => array(
+ 'board:board_content'=>array('{:module}/{:controller}/{:action}/{id}'),
+ )
);
(1/1) Apply this hunk to index and worktree [y,n,q,a,d,e,?]? y
```
### 撤销所有更改
`git checkout .`
### 撤销文件更改
`git checkout README.md`
### 一个分支强制覆盖另一个分支
方式一:
```
git push origin develop:master -f
```
方式二:
```
git checkout master
git reset --hard develop
git push origin master --force
```
方式三:
如果被覆盖的分支为保护分支
```
git checkout master
git reset --hard develop
git pull --rebase
git push origin master
```
';