一  介绍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操作之后,切换到其他分支,再切回到当前分支,当前分支不会丢代码。 

 

参考阅读

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。