首先要知道为什么要克隆仓库,克隆下来有什么用
有两个用处:
1.在本地先创建一个工作目录用以便将克隆过来的文件存放。
本次演示为了方便,还是以在桌面存放的文件夹作为工作目录。
步骤:在桌面创建一个为repository的文件夹,在点进去创建一个clone-repo的文件夹作为存放克隆创库的工作目录
可能有些小伙伴看到这个repo1有点困惑,但是看过我上篇文章的小伙伴就知道这个repo1是用来演示增删改查操作的,如果不会创建的本地仓库去看上一篇文章吧!!!
Git之基于图形界面工具TortoiseGit(乌龟git)增删改查本地仓库以及建立远程仓库,同步本地仓库至远程仓库github
2.接下来是进行克隆,首先还是使用ssh方式克隆,同样的ssh需要配置公钥私钥配对,需要先给github或者其他类似github的网站加入ssh的公钥,不会的还是点击上面的链接,看我第一篇文章,里面有图文教程。(里面还有创建github仓库教程)
步骤:先开通github账户和创建远程仓库,上篇文章已经创建了,那么我们就直接使用上篇文章创建的远程仓库repo3,点击复制ssh传输使用得url。
以下先演示用命令行克隆:
先在clone-repo目录下,右键git bush here,输入
$ git clone git@github.com:calmtho/repo3.git
可以通过右键乌龟移动到查看日志还有浏览版本库比对查看可知确实是从远程仓库克隆下来,是一模一样的,这里就不演示了,不会的话同样的看上一篇文章,里面有讲到。
注意:
如果是使用https传输方式只要将url变成https的url就可以了
这次换成使用乌龟来演示ssh克隆,首先为了以示区别,换一个github的仓库,换成repo1
点击复制repo1的ssh传输的url
使用乌龟演示https克隆方式:
同样的以示区别,切换城github此前已经创建了的创库repo2,复制其https的url
同样在本地电脑的clone-repo空白处右键克隆
等待传输即可
至此克隆你已经学会了,无论是使用乌龟还是命令行,又或者是http或者ssh方式传输
我们知道git最大的好处就是协同开发,那自然就本地和远程仓库自然在我们操作前或者操作后应该进行一个同步,这样才能保证一致性和时效性。此前一直讲的是克隆或者直接创建仓库,这种操作更多是在项目开始,或者刚刚接手项目的是很好会做这一块,而后相信做的更多的都是拉取和推送文件,修改了啥,就传啥。那么既然是协同开发,冲突是难免的,尤其是大家修改的东西的行数相差不远的情况下,彼此提交的时候,本地仓库和远程仓库不一致的情况下常会产生冲突,那么接下来,就讲解一下,怎么使用乌龟推送同步仓库以及怎么解决冲突。
示范操作:
步骤:1.在此前克隆下来的repo1仓库,新建一个文件hello3.txt同时将其add即添加操作,添加到暂存区,右键该文件移到乌龟再移到添加
2.图标变成这样就是已经添加到了克隆下来的repo1的暂存区,然后提交,即将其提交到本地这个克隆的repo1本地仓库内了。
3.查看浏览器确定其是否真的加入本地仓库
点击hello3.txt这个目录的空白处,右键移到乌龟,再移动到版本库浏览器。
4.修改hello3.txt中的内容, 加入一行aaaa,保存,然后点提交填写向hello3.txt添加了一行aaaa,确认提交日志到本地仓库。
5.关闭,然后同步推送该文件到github的repo3到远程仓库同步。
远程仓库是没有hello3.txt的现在,所以我们想将这个变化提交给它。 我们右键这个文件夹的空白处, 然后点击同步。(其实也可以在上一步提交完本地就有个推送的按钮,按那个按钮也可以使用远程传输同步)
我们使用ssh传输,因为要用https要使用github账户密码验证,个人觉得麻烦就是用ssh了,记住用是选择私钥,因为我们在github上传的是公钥,我们选了私钥会在本地和github的公钥进行比对,匹配成功就可以,看了我上篇文章的就知道是怎么回事
添加然后选择是,然后确认,然后回到同步页面选择origin3
点击推送
查看日志最后现在操作确实是24分钟前。
1.在克隆下来repo3下,现在是没hello3.txt的,那些我们想把这个repo3和远程的repo3同步,将刚刚更新的hello3.txt拉取下来
右键这个repo3选择同步,然后还是一样先看管理看看这个远程传输是哪个仓库的
看完我们想起来,我们的repo3是使用ssh从远程的repo3克隆克隆下来的,所以默认的连接就是我们要使用的,那么就确定然后选择拉取
也可以通过空白处右键乌龟然后可以选拉取和获取,两二者都是从远程同步本地,不同的是结果有一点区别
后续会了解,我们可先看一些关于git的理论知识,
拉取和获取的区别可参考以下博文:
https://www.cnblogs.com/zzb-Dream-90Time/p/7654875.html
1.首先要制作冲突,就是模拟实际中可能出现的情况,如大家同时开发用时拉取,一个人修改了文件先提交了推送远程,而我们修改也想推送远程,那么这时候就有可能出现冲突了。
注意:现在本地repo1和repo3的文件都是一样的
往repo1的hello3.txt在末尾开始添加
this is repo1 edit
11111
11111
保存,
然后提交本地仓库,再远程推送到repo3远程仓库
提交,看见成功后推送,不累述之前已经讲过
2.修改本地的repo3然后提交本地推送远程
往repo3里修改添加以下内容
this is repo3 edit
3333
3333
3333
3333
然后推送,此时不能提示不能顺利
退出码128即有冲突,不一致,本地不是最新的,有人先提交了
可参考:https://blog.csdn.net/qq_42120178/article/details/95377289
那么接下来我们就只能先拉取远程的,再解决冲突,拉取下来后效果:
打开hello3.txt看
因为改变行数太近,所以会出现冲突,所以我们要手动解决冲突(也只能手动),我们要按照实际修改该怎么排就怎么排,那这个案例很简单,谁先后没关系,那就把head,==,>>这些删除了,保存。
我们已经处理了,但是git不知道我们已经处理了,那我们就手动提交已经解决冲突了,右键文件,然后移到乌龟再移到
这里日志笔误,实际是3在1前,哈哈哈这是模拟联系,不打紧,工作中要好好检查再提交,不然狗头又要没了哈哈