建立本地仓库和远程仓库
在这里,我会新建一个Giterge的空文件夹,并且我会将该文件设置为本地仓库以及在github远程仓库中建立相对应的Giterge远程仓库。
首先,在github新建一个远程仓库,命名为GitMerge,如下图所示:
建立本地仓库GitMerge,并且初始化本地仓库,如下图所示:
我会在本地仓库GitMerge存放一个Git.txt文件,内容初始为:
Git is a divided software
Git also is a free sortware
Git used to learn
将本地仓库的内容推送到远程仓库
首先,我们把Git.txt文档推送到本地仓库中:
推送成功后可以看到Git.txt文件标绿,表示当前文件推送成功。
接下来,我们就可以将本地仓库与远程仓库建立链接:
我们首先找到远程仓库GitMerge的ssh密钥,如下图所示,红色标记的是ssh密钥或者可以找到http的链接,两个都可以,但是http链接每次都需要输入用户名和密码,使用ssh密钥第一次需要确认,其余都可以,一般建议使用ssh密钥:
建立本地仓库和远程仓库的链接,如下图所示:
因为我已经建立本地仓库和远程仓库的链接,所以就会显示已经存在,主要原因是本地仓库与远程仓库的对应关系为一对一的格式,一个本地仓库只能对应一个远程仓库。
将本地仓库的内容推送到远程仓库
建立链接完就可以向远程仓库push本地仓库文件
我们将本地仓库的Git.txt文档push到远程仓库下,如下图所示:我们第一次push时,因为本地仓库在远程仓库下是没有对应的主枝“master”,所以需要在远程仓库下新建一个主枝,Git是基于时间线进行修改,所以必须将本地仓库和远程仓库下的每个branch对应。
Push成功后就会看到远程仓库下对应的文件,如下图所示:
本地仓库下进行Merge
Merge主要功能是用于合并不同的branch内容,并且和并为最终的master并提交到远程仓库:
新建一个本地文件
首先,我们建立一个新的name.txt,如下图所示,我在本地仓库建立name.txt,并且在这里新建一个新的分支”branch”命名为”dev”, name.txt的内容如下:
Hello every
My name is SunZexing
在本地新建分支并建立对应的远程仓库
接下来,我把新建的文件推送到本地仓库“dev”的分支下,如下图所示:
“git add –A”命令会将当前改动的文件全部添加到“dev”的分支下.现在将该文件push到分支“dev”对应的远程仓库下,如下图所示,在远程仓库dev下可以看到name.txt和Git.txt都已经添加到远程仓库下:
对两个文件进行合并
现在在本地仓库对两个分支进行合并到 “master”主枝:
首先,我们切换到主枝“master”下,在对“master”和分支“dev”进行合并,如下图所示:
接下来提交到远程仓库如前面提到的。如下图所示,远程仓库已经含义两个txt文档.
对远程仓库进行修改
现在我对远程仓库的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已经修改:
对本地分支dev进行rebase
首先,远程仓库修改后的Git.txt如下:
对本地文件进行修改如下:
Git is a divided software
Git also is a free sortware
Git used to learn
Git also can be used to rebase
现在,我想将远程仓库的文件和本地仓库的文件进行合并。
建立本地分支
首先,我还是现在本地建立一个分支,命名为dev,如下图所示:
并且将修改后的Git.txt添加到本地分支dev.
将远程仓库的内容pull到本地master分支
如上图将远程pull到本地,可以看到Git.txt文档是远程仓库的内容。
现在先进入分支dev中,在对dev中的内容进行修改。
Rebase
在当前文件鼠标右键,打开TortoiseGit选择显示日志,如下图所示
红色分别是分枝“master”和分支“dev”.再鼠标右键master选择“变基dev到这里”如下图所示:
如上图所示,最终合并的txt文档为下面,可以选择使用两个上面的冲突文档进行合并。
如下图所示,可以看到最终时间线合并为master整条时间线。
最后提交到远程仓库就合并完成。
一些常遇到的问题解决方案
git push遇到的问题:
解决方法1:
git push –f (将本地仓库的文件全部推送到远地)
git fetch
git merge (等同于git pull)
主要原因:git仓库中已经有一部分代码,所以它不允许你直接把你的代码覆盖上去