一 介绍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操作之后,切换到其他分支,再切回到当前分支,当前分支不会丢代码。
文章介绍了在Git中使用smartcheckout和forcecheckout时,未提交修改对分支切换的影响。smartcheckout会将冲突内容带到目标分支,而forcecheckout则会丢失当前分支的未提交修改。在进行add和commit操作后,切换分支能保留代码。
1318

被折叠的 条评论
为什么被折叠?



