1.checkout与reset的区别:
checkout是从index缓存区刷到工作区,如果已经commit,就先用reset--mixed,再用checkout,或者直接用reset--hard,不加--版本号,就是切换分支。
reset有三种方式:soft,mixed,hard;
hard:调整head,刷到index,index刷到工作区;mixed:调整head,刷到index;soft:index刷到工作区。
2.reset和revert的区别:
reset是head往后移,revert是往前移;
reset会删掉提交记录,revert相当于是重新commit一个新的,用来抵消之前的提交;
revert有冲突的话会提醒合并代码。
如果是push的版本,不应该进行reset了,因为可能把别人的代码reset掉。
在公共分支,推荐使用revert,个人分支可以使用reset。
3.rebase和merge的区别:rebase一般是分支把master的代码同步进来,而merge一般是master把分支的代码合进来,merge会生成一个新的提交记录。
推荐使用rebase,因为merge后,想回退版本很麻烦,因为merge会把分支的所有提交合并成一个新的commit。