在开发中,我们常常需要加一些临时的代码来测试某些功能,这些代码通常不适合提交到主分支上,这时候我们需要建立一个新的分支,并提交这些代码。
1. 操作逻辑
- 创建分支:新分支会基于当前分支的 最新提交(HEAD 指向的提交)创建。
-
切换分支:Git 会将工作区(代码文件)和暂存区(已
git add
但未git commit
的内容)直接带到新分支,但不会触发任何提交操作。
示例场景:
# 当前在 main 分支,修改了代码但未提交
git checkout -b new-feature # 创建并切换到 new-feature 分支
-
结果:
-
main
分支:无新提交,未提交的修改仍留在工作区。 -
new-feature
分支:未提交的修改会显示在工作区(与main
分支完全相同)。
-
2. 关键规则
- 未提交的修改:属于工作区,不属于任何分支,切换分支时会一起带到新分支。
- 已提交的代码:属于原分支的历史记录,新分支会继承这些提交。
示意图:
原分支(main)
|
* 已提交的代码(HEAD)
|
└── 工作区未提交的修改(跟随用户切换分支)
3. 如何处理未提交的修改?
-
方案 1:提交后再切换
git add . git commit -m "临时提交未完成的修改" git checkout -b new-feature
-
方案 2:储藏修改(stash)
git stash # 暂存未提交的修改 git checkout -b new-feature git stash pop # 在新分支恢复修改
-
方案 3:直接带到新分支(默认行为)
git checkout -b new-feature # 未提交的修改会保留在工作区
4. 注意事项
- 冲突风险:如果原分支和新分支的代码存在冲突,切换分支时可能会失败(需手动解决冲突)。
- 代码安全:未提交的修改在切换分支时不会丢失,但建议及时提交或储藏,避免误操作覆盖。
总结
- 创建并切换分支不会提交代码到原分支。
- 未提交的修改会保留在工作区,跟随用户切换到新分支。
- 若需“冻结”当前状态,可以使用
git stash
或临时提交。