更安全的方式,从git 2.23.0开始
git switch Branch3
- 切换到当前分支的Branch3
git merge Branch1
- 将Branch1分支合并到当前分支
(可选)将一个分支的提交更新到另一个分支上
git switch Branch2
git rebase Branch1
为什么要使用`switch`分支而不是`checkout`:
- 使用专用命令切换分支而不是多功能的`checkout`,是一种更安全的切换和合并分支的方式。
- `checkout`命令被拆分(替换)为`switch`和`restore`命令,因为它容易引起混淆和错误。
- 这是项目git
commit,介绍了拆分为`switch`和`restore`命令的说明。
- 这是git团队的解释:
> "git checkout" 做太多事情会让很多用户感到困惑(甚至有时候会让老手也犯错)。为了解决这个问题,该命令将被拆分为两个新命令:switch和restore。好用的"git checkout"命令仍然存在,直到所有用户(或大多数用户)都对它感到厌倦为止。
额外的信息:
- 当你不想将两个分支合并成一个分支时,可能会派上用场。
- 例如,`mess-around-branch` 和 `feature` 必须有各自的历史记录。
或者你的 `dev` 分支必须包含每一个"步骤",但 `master` 只应包含对 `dev` 分支的所有提交的累积提交。
Git 默认使用“快进合并”(fast-forwarding)的方式,人类可理解的意思是,如果可能的话(移动指针到最新的提交,而不是合并提交),它会将分支合并成单一的历史记录。
它将合并这个。
| * changed targetSdk 32 to 33
| * code cleaning
|/
* First commit
转换成这个
* changed targetSdk 32 to 33
* code cleaning
* First commit
如果你需要分支历史记录,请告诉Git不要使用--no-ff。
使用
git merge --no-ff Branch1
命令,可以让你手动提交合并所创建的更改。
合并后保留两个分支的日志。
* code cleaning, sdk 33
|\
| * changed targetSdk 32 to 33
| * code cleaning
|/
* First commit