前提环境,配置好IDEA的Git环境(连接远程仓库,以github为例),顺便建立一个分支branch。项目中随便创建一个txt文件,本文为gittest.txt。
1.首先进行commit操作(以整个项目提交为例)
点击后出现如下窗口
commit命令并不提交到远程仓库
2.接下来依旧以整个项目右键进行push操作
出现如下窗口,选择刚刚写的commit messesy消息,进行提交。
提交成功后对比远程仓库内容,发现多了一个gittest.txt文件(如下图),并且可以看到第一步时提交的描述信息。
说明push是提交的远程仓库的命令。
3. 切换到分支branch(IDEA2018右下角,右键),切换成功后圈圈出处会变化到分支名称
切换后发现分支branch没有主分支的gittest.txt文件(如下图,初始主分支与分支统一内容)。这里有一个有意思的地方,当你切换时打开项目本地目录会发现目录只有一个但与git一一对应,你打开的是哪个,目录就有哪些内容,目录还是那个目录。
4. 进行pull命令尝试拉取项目,发现没什么变化,说明拉取的只是这个分支。
5. 尝试进行合并分支操作(Merge Changes),看看有什么效果。
点击后出现如下图窗口,发现有刚刚主分支是的操作,第一个是本地的,第二个是远程(remotes)的。两个都勾选看看效果。
此时发现项目出现gittext.txt文件,Merge Changes说明可以合并主干的内容到分支。
此时再对比远程仓库分支的内容发现并没有这个文件,说明只是合并的本地的,此时再进行commit操作看看。发现说没有改变(如下图),此时明明有改变啊,多了个文件啊!!!看看是不是切换错了,发现没有,那就两边切换看看。发现再切换回来时确实是改变了的,但git无法识别,可能是个BUG。我们修改文件内容,发现可以了。
那这到底是说此时是主干还是分支(此时IDEA显示的是分支)?验证一下,我们修改文件内容为“验证下此时到底是主干还是分支,此时IDEA显示的是分支。”,进行提交到远程仓库看看有什么变化。先commit再push。别忘了push到远程仓库
经过验证发现是分支,主干内容并没有变化,那就没错了。
忘了尝试内容没改变是直接push能不能成功了。那就回到主干在创建一个Gitest2.txt文件进行前面几步操作验证下。经过验证发现可以。
那我们进行一个在进行分支合并到主干的操作。切换到主干(此时没有提交Gitest2.txt到远程主干),我们修改下这个Gitest2.txt文件的内容并commit提交,不提交切换会出现冲突。再点击Merge Changes合并发现出现冲突,对冲突进行处理
操作示意图如下:
冲突处理完后,需要commit, 这里有个情况,Gittest文件也有冲突但是没有报,他自己修改了。我也不知道什么情况。然后就可以push提交到服务器了。但不建议这样做先。理由看下别人说的。
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
附上别人写的git解决冲突的部分内容:
()
git的合并中产生冲突的具体情况:
<1>两个开发者(分支中)修改了同一个文件(不管什么地方)
<2>两个开发者(分支中)修改了同一个文件的名称
注意:两个分支中分别修改了不同文件中的部分,不会产生冲突,可以直接将两部分合并。
关于冲突的个人心得
多人协作开发的时候,如果出现了你没有改过的文件跟你冲突了,一定要去找到当事者,说清楚是如何冲突的;
然后协商解决,千万不要擅自拉别的分支去试图解决冲突,或找文件覆盖,更或者以自己的文件为准.
同时记住,解决了之后,要add 和 commit 最后push.为保证万无一失,最后在冲突都解决之后,重启项目;
保证至少不会有立即奔溃的现象发生.然后才去提交,push.
提交的时候,一定要保持清醒,先搞清楚自己要提交的文件之间的关系,然后再提交,这样才不会有文件缺失的问题,造成奔溃.
如果任务比较多,又开了多个分支,分别进行开发,再次强调,一定要清楚自己在各个分支上做了什么,自己要提交的是什么.最好是能做个详细的笔记,没有把握宁愿不要去提交到生产服务器.
提交代码的时候不要走神,因为这是一个神圣的时刻!
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
6. 回退操作:
回退是可以回退,就是Push不了,每次都会是项目不一致。网上查的文章都不行。先不写了。写的有点乱就这样了。