目录
- P27-Git基本原理-Hash算法简介
- P28-GIt版本数据管理机制
- …
- P33-为了测试远程交互初始化本地库
- P34-创建远程仓库
- P35-在本地创建远程库地址别名
- P40-协同开发时冲突的解决
- P41-跨团队协作操作演示
P27-Git基本原理-Hash算法简介
P28-Git版本数据管理机制
SVN:是增量式版本控制工具。
保存增量,需要时进行拼接得到最终文件。
Git:基于快照的思想,对于没有改动的文件,用指针指向上次保存的文件
Git文件管理机制细节
Git的提交对象
P33-为了测试远程交互初始化本地库
mkdir huashan #创建华山文件夹
cd huashan #进入华山文件夹
git init #初始化
vi huashanjianfa.txt
git add huashanjianfa.txt
git commit -m "test github" huashanjianfa.txt
#至此,本地库这边准备就绪
P34-创建远程仓库
github:http://github.com/
点击create respository创建远程仓库,创建完成之后跳出下面的信息。
P35-在本地创建远程库地址别名
git remote -v #查看地址别名
git remote add origin[origin是地址别名] addr
P36-推送操作
把本地仓库内容推送到远程仓库
git push [连接别名/连接本身] [分支名]
git push origin master
首先跳出这个页面,输入你的github账号密码,即可,没有github账号的,使用github官网进行注册。P33-34
刷新刚刚建立的远程仓库连接就能看到我们刚刚push的内容huashanjianfa.txt
P37-克隆操作
克隆:
- 命令:git clone [要克隆的远程库链接/地址]
git clone https://github.com/atguigu2018ybuq/huashan.git
cd huashan
P38-邀请令狐冲加入团队成员
令狐冲修改了huashanjianfa.txt 并将该文件提交到本地库,企图进一步将其push到远程仓库,但是失败了,提示错误信息,因为仓库所有者还没有邀请令狐冲加入该团队。
仓库所有者向令狐冲发出加入团队邀请,且令狐冲同意之后,即可进行push操作,否则只能clone。
vi huashanjianfa.txt
git add huashanjianfa.txt
git commit -m "test push" huashanjianfa.txt
git push origin master
如何进行邀请协作者?
1、仓库所有者进入github对应的仓库界面,点击settings,如下图所示
2、点击collaborators,在输入框内输入对方的GitHub账号,选中该用户,点击add collaborator
3、复制邀请链接发送给对方
4、对方登录GitHub账号,点击你的协作邀请链接,点击加入即可。
5、令狐冲成为团队成员
6、令狐冲可以成功进行push
【注意】在同一台机器上进行两个账号切换测试的时候,需要去控制面板的凭据管理器删除之前记住的密码。
P39-远程库修改的拉取
- pull = fetch + merge
- git fetch [远程库地址别名] [远程库分支名]
fetch 只是将远程的内容下载到本地,但没有修改远程的内容
- git merge[远程库地址别名/远程库分支名]
【fetch+merge】
git fetch origin master
cat huashanjianfa.txt #读取的还是本地的huashanjianfa.txt文件,而不是fetch下来的文件
git checkout origin/master #切换到该目录下 查看远程仓库fetch下来的huashanjianfa.txt文件
cat huashanjianfa.txt #这次检查的fetch下来的远程仓库的最新内容,检擦没有问题之后再与本地的文件进行合并操作
git checkout master #切换回本地仓库
git merge orgin/master #将刚刚fetch下来的内容进行合并
这里将fetch和merge分开操作,有什么好处呢?
当操作比较复杂的时候,可以暂时不对本地的文件进行合并操作,可以先使用fetch将远程库的文件下载下来之后,确保无误,再将远程库的文件和本地文件进行合并。
下面演示pull操作
P40-协同开发时冲突的解决
团队协作的时候很容易会出现冲突,两个人都修改同一个文件同一个位置,一个人先push到远程仓库的时候,另一个人push就会提示冲突,push失败,这个时候需要先把代码下下来,看看冲突所在,解决冲突。
岳不群修改文件,并push到远程库。
vi huashanjianfa.txt
git commit -m "edit by ybuq" huanshanjianfa.txt
git push origin master
与此同时,令狐冲也对该文件进行了修改
vi huashanjianfa.txt
git commit -m "test conflit" huashanjianfa.txt
git push origin master #发生冲突
令狐冲修改的文件版本已经比远程库落后一个版本了,是在旧版本的基础上进行的修改,但是他不知道这个事情,当他把修改的文件push到远程仓库的时候失败。
要重新拉取最新的数据:
git pull origin master
下面就是解决冲突,删除特殊符号,将冲突内容改成需要的样子,(之前该系列的博客中介绍过这个内容)
git add huashanjianfa.txt
git commit -m "resolve confict" #注意这个时候对于解决冲突的提交 是不加文件名的提交
git status #查看状态
git push origin master #推送到远程仓库
解决冲突
要点:
- 如果不是基于GitHub远程库的最新版所做的修改,不能推送,必须先拉取。
- 拉取下来之后如果进入冲突状态,则按照“分支冲突解决”操作解决即可。
P41-跨团队协作操作演示-Fork-pull request
岳不群让令狐冲开发葵花宝典,但是令狐冲不会就找东方不败帮忙,但是东方不败是日月神教科技集团CEO,不能跳槽到华山,于是令狐冲让其fork华山的项目到本地,之后就可以在本地进行改动,完成之后再pull request,老大岳不群审核之后,审核通过就可以merge。
#fork
git clone [东方不败fork之后的项目链接] #将该项目克隆到本地
ls -lA #展示当前目录下的所有文件
cd huashan
ls -lA
vi huashanjianfa.txt
git commit -m "kuihua" huashanjianfa.txt
git push origin master
#到东方不败的GitHub上面查看文件是否更新
#下面进行pull request 操作
东方不败的工作至此已经完成,接下来岳不群进行操作
点击之后,进入下面的页面
两人可以再次页面交谈
对文件进行审核通过之后,回到对话框,下面有个Merge pull request 按钮
点击之后,填写信息,相当于日志信息
将远程库的修改拉取到本地,至此,远程协作功能到此结束
使用http方式每次登录都需要输入用户名和密码,ssh免密登录省去了很多麻烦。
P42-SSH 免密登录
见下一篇博客