GitHub
在版本控制系统中,大约90%的操作都是在本地仓库中进行的:暂存、提交,查看状态或者历史记录等等,除此之外,如果仅仅只有你一个人在这个项目里工作,你永远没有机会需要设置一个远程仓库。
只有当你需要和你的开发团队共享数据时,设置一个远程仓库才有意义。你可以把它想象成一个“文件管理服务器”,利用这个服务器可以与开发团队的其他成员进行数据交换。
注册
- 访问[GitHub][https://github.com/] 首页,点击Sign up连接。(注册)
多人协作开发流程
- A在自己的计算机中创建本地仓库
- A在GitHub中创建远程仓库
- A将本地仓库推送到远程仓库
- B克隆远程仓库到本地进行开发
- B将本地仓库中开发的内容推送到远程仓库
- A将远程仓库中的最新内容拉到本地
创建远程仓库
本地仓库推送到GitHub远程仓库
-
创建好的仓库首页面
-
git push 远程仓库地址 分支名称
-
git push 远程仓库地址别名 分支名称
-
git push -u 远程仓库地址别名 分支名称
- -u 记住推送地址及分支,下次推送只需要输入git push即可
- git remote add 远程仓库地址别名 远程仓库地址(为远程仓库地址添加别名)
GitHub远程仓库克隆到本地仓库
克隆远端数据仓库到本地:git clone 仓库地址
克隆不需要身份验证
B推送到远程仓库
A邀请B成为项目开发者,B才有权推送到远程仓库
- 邀请过程
复制邀请链接发给程序员B
将A发送的邀请链接复制粘贴到浏览器打开,选择接受邀请
已获得仓库操作权限
B推送到远程仓库:git push 仓库别名称 分支名称
A将最新版本更新到本地仓库(拉取操作)
克隆仓库
克隆远端数据仓库到本地:git clone 仓库地址
拉取远程仓库中的最新版本
拉取远程仓库中的最新版本:git pull 远程仓库地址 分支名称
拉取操作属于读操作,GitHub不需要身份验证,所以可以直接进行操作
git pull 命令和 git clone命令区别:git pull是在已经有本地仓库的基础上进行的,git clone是完全克隆远程仓库,实在没有本地仓库的基础上进行的,git clone只需要在第一次加入项目开发的时候用到,在克隆完成以后就不再需要使用这个命令了。在后续操作中,如果要拉取远程仓库中的内容,使用git pull命令就可以了。
如果远程仓库版本高于本地仓库版本,此时本地仓库是不能向远程仓库中进行提交的,本地仓库必须先要拉取远程仓库中的内容到本地,然后再向远程仓库中进行提交。
解决冲突
再多人同时开发同一个项目的时候,如果两个人修改了同一个文件的同一个地方,就会发生冲突,冲突需要人为解决。
冲突的发生:只有先向远程仓库进行推送的人才能推送成功,后推送的人是推送不上去的,因为第一个人已经向远程仓库中提交了版本,第二个人的本地仓库中并没有这个版本,导致远程仓库版本高于本地仓库版本,所以推送不上去,第二个人需要将远程仓库中的版本拉取到本地,但是由于两个人修改了同一个文件的同一个地方,所以导致冲突的发生。
冲突的解决:冲突发生的时候,工具是不能帮助我们决定怎么做的,需要人为解决,所以第二个人需要在本地仓库中先把冲突解决掉,然后再向远程仓库中提交才能提交成功。
制造冲突
程序员A
-
程序员A修改index.html文件
-
将修改的文件添加到暂存区中并进行提交
-
推送到远程仓库中
程序员B
-
程序员B修改index.html文件(与A修改同一地方)
-
将修改的文件添加到暂存区中并进行提交
-
推送到远程仓库(由于与A程序员修改同一位置,所以发生冲突,B程序员推送不上去)
解决冲突
- B程序员将最新版本(即A程序员修改并提交的版本)拉取到本地
- 当前冲突的区域发生变化
- 把冲突标记删除,把文件改成我们需要的内容并进行保存
- 将做出的修改添加到暂存区中并提交到本地仓库
- 把本地仓库推送到远程
跨团队协作
GitHub除了支持团队协作以外,还支持非团队协作,即使你不是团队成员,也有方法想其他人的git仓库中提交代码,只不过你提交的代码是需要被审核的,只有审核通过了才有可能生效。
- 该功能应用场景:比如说要完成一个网页效果,但是这个效果写出来要花费一些时间,你不想花费这个时间,于是你在GitHub中找到了一个正好能够实现这个效果的库,但是在使用过程当中,发现这个库的功能并不完善,然后你讲这个库进行改写完善,此时你就可以将你完善的代码提交给原仓库的作者,如果原仓库作者认为你提交的代码非常有价值,就会将你写的合并到他的仓库当中。
基本流程
- 程序员C fork仓库
- 程序员C将仓库克隆在本地
- 程序员C将仓库推送到远程
- 程序员C发去pull request
- 原仓库作者审核
- 原仓库作者合并代码
详细过程
-
将A程序员的仓库fork一份到自己的GitHub账户中,fork之后该仓库属于自己
-
克隆仓库到本地
-
在本地对仓库进行修改
-
将做出的修改添加到本地仓库中
-
修改完之后再将本地仓库推送到当前这个远程仓库中(自己复制的那个)
-
向原作者发送代码修改的请求
-
原作者的仓库页面会收到相应请求
-
对其做出的修改进行审核
-
将其修改的代码合并到原作者仓库中
ssh
免登陆
https协议仓库地址:https://github.com/yoliuchn/git-demo.git
ssh
协议设置
-
生成秘钥:
ssh-keygen
(一路回车)
-
秘钥存储目录
C:User\用户\\.ssh
-
公钥:
id_rsa.pub
(公钥放在GitHub服务器中)-
通过代码编辑器打开复制该字符串
-
在GitHub进行设置
-
密码验证
-
添加成功
-
-
私钥名称:
id_rsa
(私钥保留在自己的电脑的对应目录当中)
使用ssh
协议对仓库进行操作
-
获取
ssh
地址
-
将本地仓库推送到远程
GIT忽略清单
作用:告诉git哪些文件不需要它进行管理
将不需要被git管理的文件名字添加到此文件中,在执行git命令的时候,git就会自动忽略这些文件。
-
git忽略清单文件名称:.git(命名格式——.xxx)
-
将工作目录中的文件全部添加到暂存区:
git add .
为远程仓库添加详细说明
只需要在项目根目录下创建一个名字为readme.md的文件,这个文件的内容会自动显示在仓库文件列表的下方。
-
创建readme.md文件
-
添加到本地仓库中
-
推送到远程仓库
只有将readme.md文件推送到远程仓库,才能在仓库文件列表下方看到