建立本地仓库和远程仓库

在这里,我会新建一个Giterge的空文件夹,并且我会将该文件设置为本地仓库以及在github远程仓库中建立相对应的Giterge远程仓库。
首先,在github新建一个远程仓库,命名为GitMerge,如下图所示:

git重新连接远程仓库 git 建立远程连接_远程仓库

建立本地仓库GitMerge,并且初始化本地仓库,如下图所示:

git重新连接远程仓库 git 建立远程连接_git重新连接远程仓库_02

我会在本地仓库GitMerge存放一个Git.txt文件,内容初始为:

Git is a divided software
Git also is a free sortware
Git used to learn

将本地仓库的内容推送到远程仓库

首先,我们把Git.txt文档推送到本地仓库中:

推送成功后可以看到Git.txt文件标绿,表示当前文件推送成功。

git重新连接远程仓库 git 建立远程连接_git重新连接远程仓库_03


接下来,我们就可以将本地仓库与远程仓库建立链接:

我们首先找到远程仓库GitMerge的ssh密钥,如下图所示,红色标记的是ssh密钥或者可以找到http的链接,两个都可以,但是http链接每次都需要输入用户名和密码,使用ssh密钥第一次需要确认,其余都可以,一般建议使用ssh密钥:

git重新连接远程仓库 git 建立远程连接_Git的使用_04


建立本地仓库和远程仓库的链接,如下图所示:

git重新连接远程仓库 git 建立远程连接_远程仓库_05


因为我已经建立本地仓库和远程仓库的链接,所以就会显示已经存在,主要原因是本地仓库与远程仓库的对应关系为一对一的格式,一个本地仓库只能对应一个远程仓库。

将本地仓库的内容推送到远程仓库

建立链接完就可以向远程仓库push本地仓库文件

我们将本地仓库的Git.txt文档push到远程仓库下,如下图所示:我们第一次push时,因为本地仓库在远程仓库下是没有对应的主枝“master”,所以需要在远程仓库下新建一个主枝,Git是基于时间线进行修改,所以必须将本地仓库和远程仓库下的每个branch对应。

git重新连接远程仓库 git 建立远程连接_远程仓库_06


Push成功后就会看到远程仓库下对应的文件,如下图所示:

git重新连接远程仓库 git 建立远程连接_git重新连接远程仓库_07

本地仓库下进行Merge

Merge主要功能是用于合并不同的branch内容,并且和并为最终的master并提交到远程仓库:
新建一个本地文件
首先,我们建立一个新的name.txt,如下图所示,我在本地仓库建立name.txt,并且在这里新建一个新的分支”branch”命名为”dev”, name.txt的内容如下:

Hello every
My name is SunZexing

git重新连接远程仓库 git 建立远程连接_git重新连接远程仓库_08


在本地新建分支并建立对应的远程仓库

接下来,我把新建的文件推送到本地仓库“dev”的分支下,如下图所示:

git重新连接远程仓库 git 建立远程连接_Git的使用_09


“git add –A”命令会将当前改动的文件全部添加到“dev”的分支下.现在将该文件push到分支“dev”对应的远程仓库下,如下图所示,在远程仓库dev下可以看到name.txt和Git.txt都已经添加到远程仓库下:

git重新连接远程仓库 git 建立远程连接_git重新连接远程仓库_10

对两个文件进行合并

现在在本地仓库对两个分支进行合并到 “master”主枝:
首先,我们切换到主枝“master”下,在对“master”和分支“dev”进行合并,如下图所示:

git重新连接远程仓库 git 建立远程连接_推送_11


接下来提交到远程仓库如前面提到的。如下图所示,远程仓库已经含义两个txt文档.

git重新连接远程仓库 git 建立远程连接_git重新连接远程仓库_12

对远程仓库进行修改

现在我对远程仓库的master主枝下的Git.txt进行修改如下:

Git is a divided software
Git also is a free sortware
Git used to learn
Git wiill been used to rebase

将远程仓库的文件pull到本地仓库

首先,我先将远程仓库的文档pull到本地,如下图1所示,可以看到本地的Git已经修改:

git重新连接远程仓库 git 建立远程连接_git重新连接远程仓库_13

对本地分支dev进行rebase

首先,远程仓库修改后的Git.txt如下:

git重新连接远程仓库 git 建立远程连接_远程仓库_14


对本地文件进行修改如下:

Git is a divided software
Git also is a free sortware
Git used to learn

Git also can be used to rebase

现在,我想将远程仓库的文件和本地仓库的文件进行合并。

建立本地分支

首先,我还是现在本地建立一个分支,命名为dev,如下图所示:

git重新连接远程仓库 git 建立远程连接_Git的使用_15


并且将修改后的Git.txt添加到本地分支dev.

将远程仓库的内容pull到本地master分支

git重新连接远程仓库 git 建立远程连接_git重新连接远程仓库_16


如上图将远程pull到本地,可以看到Git.txt文档是远程仓库的内容。

现在先进入分支dev中,在对dev中的内容进行修改。

Rebase

在当前文件鼠标右键,打开TortoiseGit选择显示日志,如下图所示

git重新连接远程仓库 git 建立远程连接_Git的使用_17


红色分别是分枝“master”和分支“dev”.再鼠标右键master选择“变基dev到这里”如下图所示:

git重新连接远程仓库 git 建立远程连接_Git的使用_18


git重新连接远程仓库 git 建立远程连接_git_19


git重新连接远程仓库 git 建立远程连接_远程仓库_20


如上图所示,最终合并的txt文档为下面,可以选择使用两个上面的冲突文档进行合并。

如下图所示,可以看到最终时间线合并为master整条时间线。

git重新连接远程仓库 git 建立远程连接_推送_21


最后提交到远程仓库就合并完成。

一些常遇到的问题解决方案

git push遇到的问题:

git重新连接远程仓库 git 建立远程连接_推送_22

解决方法1:

git push –f (将本地仓库的文件全部推送到远地)
 git fetch 
 git merge (等同于git pull)

主要原因:git仓库中已经有一部分代码,所以它不允许你直接把你的代码覆盖上去