add,commit的功能就不再多说了,add是提交到暂存区,commit是提交到git本地库
工作区指的是.git文件的当前路径,工作区的核心应该是覆盖和刷新,而不是xxx的工作区;合并的前提一定是两个分支的git本地库中的文件已经完全一样了再进行合并,理由如下~
0.工作区和暂存区是所有分支所共用的,不同的分支有不同的git本地库;
1.当转移到某一条分支之后,首先会将该分支所对应的git本地库中的文件都调至当前工作区,以覆盖原来的工作区,由此刷新工作区(注意:工作区是共有的,不是专属于某一条分支的);
2.接下来在该分支上使用vi命令,就可以对工作区中的文件进行修改,此时打开工作区中的文件就可以看到修改后的文件,修改后在该分支上进行add和commit;
3.接下来在该分支上试图合并另外一条分支(可能还要解决conflict并再次add和commit),也可以对工作区中的文件进行修改,该文件修改后的效果将是两分支的修改同时作用在该文件之上的结果,此时打开工作区中的文件就可以看到修改后的文件,修改后在该分支上进行add和commit,但是此时合并会失败;
4.接下来再转到另一条新的分支,这条新的分支是刚刚试图被合并的那条分支,转到1,根据1中的描述,此时工作区再次被这条新的分支的git本地库所刷新,显然新分支的git本地库中不会有3中所说的“两分支的修改同时作用在该其上"的文件,这也是为什么不能进行合并的原因,因为这两条分支的git本地库不一致;刷新后的工作区中自然也不会有3中所说的"两分支的修改同时作用在该其上"的文件;
5.接下来再在这条新的分支上试图合并原来的那一条分支,与3一样,又会对工作区中的文件进行修改,该文件修改后的效果就将是两分支的修改同时作用在该文件之上的结果,即与3中所说的文件一样,修改后在这条新的分支上进行add和commit,此时两条分支上的git本地库就完全一样了,这时就可以进行合并,最终合并成功;
6.关闭bash命令后在工作区中显示的是最后一次刷新的工作区;