一 git checkout进阶
说明: '参数不同',对应的'行为也不同'
++++++++++++'重点理解'++++++++++++
git checkout -- file
原理: '丢弃当前工作目录'的变化,使'丢弃后工作目录的内容'与'上一次暂存区'内容保持一致
① 初始环境
② 所作修改
③ 思考1
git checkout -- test.txt 为什么没有变化?
之前'错误'的理解: 丢弃'工作目录的修改'
④ 继续修改
⑤ 小结
+++++++++'git checkout -- file 两个核心点'+++++++++
1)修改的是'工作目录'
2)相对于'暂存区'最后一次'提交后'的内容做比较
⑥ 理解git reset HEAD -- file
解读: 将之前添加到暂存区('stage'、'index')的内容从'暂存区移除'到工作区
+++++++'分支重命名'+++++++
git branch -m 原名 新
二 checkout 关于commit_id深入探讨
(1)初始条件
(2)需求
(3)git checkout commit_id
++++++++++'重点'++++++++++'
git checkout commit_id -->'处于游离的历史提交点'
(4)此时的log
(5)回退到该commit_id,观察文件是否发生变化
(6)此时所处的分支
(7)尝试修改该commit_id点的信息,不做任何提交,然后切换分支
(8)修改后提交
(9)听从建议
git checkout branch_name commit_id
说明: 创建分支,并将分支指向'commit_id'这个最新的提交点
备注: 分支一旦'创建',信息‘永久保存‘
三 git stash理解
核心: 理解git中'error'和'Wrnings'信息
(1)能切换分支
(2)不能切换
① 初始条件
② 执行动作
继续: 在'test分支'上修改,不提交('add'、'commit'),尝试切换'master'分支
③ 应用场景
++++++++++++++'实际需求'++++++++++++++
1)当前正在'feature 1'分支上进行功能开发,'代码写一半'
2)此时有'紧急需求',需要在'feature 2'分支上进行'bug'修复
3)此时是'无法直接切换'的
++++++++++++++'尝试方法1'++++++++++++++
笨办法: 进行一次'commit'
备注: 不符合'日常开发原则'的,凡是'commit'的都应该是'正确的'或是'测试通过'的
++++++++++++++'最佳实践'++++++++++++++
1)将该'feature 1'分支修改'临时保存'下来
2)切换'feature 2'分支,完成开发
3)切换'fature 1'分支,把之前的保存'恢复过来'
1)临时保存
2)git stash相关命令
3)方式1:恢复临时保存的内容
4)方式2:恢复临时保存的内容
冲突的原因: '同时修改'第五行,导致'合并冲突'
备注: '解决冲突',进行'提交'之后,'git stash list'历史不会发生变化
④ 小结