玩转git的第6章节:git的smart checkout与force checkout
一 介绍smart chekcout和force checkout
1.1 smart&force的checkout介绍
1.smart checkout: 会把冲突的这部分内容带到目的分支
2.force checkout:就不会把冲突的这部分内容带到目的分支,但是你在当前分支修改的所有内容都会丢失,就算你再切回来会找不到,需要慎重操作。
3.Do not checkout :是不切分支,继续留在当前分支;
1.2 结论
在当前分支修改内容后,进行add,commit操作之后,切换到其他分支,再切回到当前分支,当前分支不会丢代码。所以一定要在当前分支进行add,commit操作后,切换到其他分支。
二 案例操作
2.1 情况1:当前分支不进行commit操作,选择smart checkout
1.假设现在在dev分支,进行修改了文件:AddLog (输出2222),然而没有进行add,commit操作
2.打开commit窗口,但是就是不提交。 就是玩,就是玩,哈哈!
3.此时没有进行commit操作,而要切换到ljf_dev分支,如下提示:
1.smart checkout: 会把冲突的这部分内容带到目的分支
2.force checkout:就不会把冲突的这部分内容带到目的分支,但是你在当前分支修改的所有内容都会丢失,就算你再切回来会找不到,需要慎重操作。
3.Do not checkout :是不切分支,继续留在当前分支;
4.这次我们选择,默认smart checkout,紧接着弹出:这里选择rollback和cancel都是一样的
5.现在在ljf_dev分支查看:看到dev分支修改的内容,并没有带过来
6.再切换到dev分支,问题出现了:
切换到ljf_dev之前的输出内容:System.out.println("222222"); 丢失了!!!!!!!!!
惊不惊喜,意不意外?????
2.2 情况2:当前分支不进行commit操作,选择force checkout
1.假设现在在dev分支,进行修改了文件:AddLog (输出2222),没有进行add,commit操作
2.打开commit窗口,但是就是不提交。
3.此时没有进行commit操作,而要切换到ljf_dev分支,如下提示:
1.smart checkout: 会把冲突的这部分内容带到目的分支
2.force checkout:就不会把冲突的这部分内容带到目的分支,但是你在当前分支修改的所有内容都会丢失,就算你再切回来会找不到,需要慎重操作。
3.Do not checkout :是不切分支,继续留在当前分支;
4.这次我们选择,默认force checkout,成功切换到ljf_dev,可以看到,dev分支修改内容没有带过来
5.再切换到dev分支:问题也出现了:
切换到ljf_dev之前的输出内容 System.out.println("222222"); 丢失了,!!!!!!!!!!!!!
2.3 情况3:当前分支进行commit操作
1.这次修改后,进行提交之后,再切换分支。
2.进行commit提交操作
3.成功提交后:切换到ljf_dev, 没有任何提示框,成功切换到ljf_dev分支
4.然后再切回dev分支。切换分支前的内容还在。
结论:当前分支修改内容进行add,commit操作之后,切换到其他分支,再切回到当前分支,当前分支不会丢代码。