初次接触到git,其他的操作都还好就是在解决冲突的时候,遇到了一些问题,网上找了好多,都感觉不是很明确。经过多次实验,终于搞明白了解决冲突的步骤,特此记录一下。

1.首先我新建了一个空文本文件,然后push到远程仓库。这个时候远程仓库和本地仓库是同步的

git 个人仓库同步主仓库 pycharm_git

git 个人仓库同步主仓库 pycharm_git_02

2.我分别在本地和浏览器上对这个文本文件进行写操作

git 个人仓库同步主仓库 pycharm_github_03

git 个人仓库同步主仓库 pycharm_github_04

3.这个时候,test.txt在本地仓库和远程仓库是不同的,我们先commit本地修改到本地仓库

git 个人仓库同步主仓库 pycharm_git_05

然后从远处仓库中pull项目 

git 个人仓库同步主仓库 pycharm_github_06

这个时候会发现项目的名字上多了一些向上向下的箭头,向下表示本地与远程仓库有不同,向上表示本地提交的次数

git 个人仓库同步主仓库 pycharm_git_07

而且如果有的文件发生了冲突,git会自动帮我们合并,但他合并的方式并不是我们想要的

git 个人仓库同步主仓库 pycharm_git_08

4.现在我们需要打开同步视图去解决我们的冲突

git 个人仓库同步主仓库 pycharm_git_09

这里显示的是冲突的文件

git 个人仓库同步主仓库 pycharm_远程仓库_10

点击Merge Tool我们就可以分屏看到本地和远程文件的具体修改

git 个人仓库同步主仓库 pycharm_github_11

git 个人仓库同步主仓库 pycharm_github_12

5.接下来我们就要参考两个文件来修改test.txt的内容了,以解决冲突,我这里将他们和并在一起,然后保存

git 个人仓库同步主仓库 pycharm_git_13

6.接下来再提交我们的修改到本地仓库,先add to index,然后commit

git 个人仓库同步主仓库 pycharm_远程仓库_14

git 个人仓库同步主仓库 pycharm_github_15

这个时候的commit信息会自动为我们填写,就是合并的信息

git 个人仓库同步主仓库 pycharm_git_16

我们commit后,这时候项目上的箭头也发生了变化

git 个人仓库同步主仓库 pycharm_远程仓库_17

7.这个时候我们就可以将本地项目push到远程仓库了

git 个人仓库同步主仓库 pycharm_远程仓库_18

push后我们项目上的箭头也消失了,这样冲突就解决了

git 个人仓库同步主仓库 pycharm_远程仓库_19

 

 

git方法解决冲突:

模似场景:

             在本地git里面增加一个文件readme.txt,编辑内容(内容随便写如:中国你好,哈哈),使用命令push到github.

         假如你本地 branch 为 master (可以通过 git branch -av查看本地和远程branch名字),远程branch 就是创建repository的名字如:(androidFragment)

                      1. git   add   readme.txt(把文件添加到git cache)

                 2. git commit (提交)

                 3. git   push  androidFragment   master(这句命令格式为 git  push 远程分支名字 本地分支名字)

      现在可以看到在github上面看到有一个readme.txt文件。现在开始在本地编辑文件readme.txt(内容随便写如:这是一个readme.txt文件,用于描述项目内容);

      同时,在github网站上面也编辑readme.txt,内容改下就好(如:中国你好,哈哈,hello).

   到此,场景已经模似出来了。

现在在执行上面的1,2,3 步骤,就会push不上去了。如图:

git 个人仓库同步主仓库 pycharm_远程仓库_20

说的意思是,push到github的远程访问被拒了,push失败,因为远程包含了你所做的工作(就是远程也做过更新)。

        按照SVN,CVS的用法就从远程更新本地的文件,操作:git pull  远程 branch  本地branch ,查看本地文件没远程的内容,没有成功;使用了git merge 远程branch好像也没成功(这步应该是不用试的,肯定不行)。

        就在 git pull 远程branch名字 本地branch名字  时,提示有一个什么rebase命令,git pull --rebase 远程branch名字  本地branch名字。如图:

git 个人仓库同步主仓库 pycharm_github_21

远程更新文件内容到本地成功。

但是,有几个问题又出现了 

   1.执行成上步后,文件内容出现<<<============      

                                                   ========>>>这样的内容,那就只能手动修改文件了,在git bash 中使用vi readme.txt编辑。改好后,wq.此问比较小,修改内容等待git push。

   2.  使用了git pull --rebase 远程branch名字  本地branch名字后,master 名字改了。如图:

git 个人仓库同步主仓库 pycharm_git_22

 看到这个不一样,也没太注意。可是当我git  push androidFragment   master 时,还是执行完1,2,3步后,那个还是拒绝。

 于是看一下,如图:

git 个人仓库同步主仓库 pycharm_远程仓库_23

也就释然了(红框包容内容)。执行了一下git rebase --continue提示如图:

git 个人仓库同步主仓库 pycharm_git_24

还是搞不定。于是我就执行了,git rebase --skip ,执行后,没有提示内容,但是(master|rebase1/1)没有了。

如图:

git 个人仓库同步主仓库 pycharm_github_25

说明可以git push了,然后我就执行1,2,3步骤,提示成功。

再去github网页上面刷新,看到文件已经提交,内容是本地的内容,问题解决