一、本地库和远程库的交互方式
①在本地初始化一个Git的本地库
②通过push命令将本地库托管至代码托管中心(如GitHub、码云等)成为远程库
③协作开发人员通过clone命令将主管push到托管中心的远程库下载到本地
④开发人员在编写好代码后再通过push命令将自己的代码推送至远程库(在此之前该开发人员需要加入团队)
⑤团队中的其他人员就可以通过pull命令将远程库的内容拉取至本地
二、GitHub相关操作
1、初始化本地库:git init
2、创建本地文件,并提交至本地库
3、创建远程库:远程库的名称无需和本地库一致
①登录GitHub,在右上角点击New Repository创建新的仓库
如果是首次在GitHub上创建远程仓库则需要进行一次邮箱验证
②填写远程仓库创建表单:码云上私有库也是免费的
③点击Create repository之后,仓库就创建好了,这时会给出远程库的地址(有Https和SSH两种类型的地址)和一些操作提示
4、在本地创建远程库地址别名:
a、在GitHub中有仓库列表,点进去即可看到远程库的地址(3中图示),我们需要使用这个地址在本地库做别名映射,以便于以后往远程库推送内容
b、使用git remote命令查看地址映射
git remote -v
c、使用git remote add 别名 远程库地址命令给远程库添加别名映射
git remote add 别名 远程库地址
5、推送文件至远程库:git push 远程库别名 本地库分支名
git push shaolin master
执行命令后需要输入GitHub的用户名和密码进行验证:
推送完成:
在远程的github上也可以看到我们推送的文件和内容:
6、克隆
①创建本地工作目录,无需初始化工作空间,cd到工作目录执行:
git clone 远程库地址
远程库地址可以使用下图所示的方式复制
②克隆完成后可以查看到从远程库拉取下来的文件:在这些文件中会有.git这个隐藏文件夹,这也是为什么我们在克隆时不需要在本地执行git init操作的原因,而且别名等也会从远程拉取下来(这个别名和管理员推送的时候设置的别名并不一致,这个别名是GitHub为我们生成的,默认为origin)
克隆的三个效果:
a、完整的把远程库下载到本地
b、创建远程库地址别名,但是这个别名和管理员推送时的别名并不一致,而是GitHub为我们设置的,默认为origin
c、初始化本地库
7、邀请他人加入团队
①在没有将他人加入团队之前他人是无法执行推送操作的(但可以执行本地的添加和提交等操作):在加入团队之前推送会被拒绝
②邀请他人加入团队
a、在仓库的Settings中添加Collaborators(协作者)
b、点击Add collaborator按钮之后将邀请链接复制下来用某种方式发送给被邀请人
c、被邀请人登录自己的GitHub账号后访问邀请人发送来的链接点击接受邀请即可:
此时被邀请人再向远程库推送就没问题了
Tip
:这里有个小知识点,一旦我们使用Git的bash窗口登录过GitHub,操作系统就会记住GitHub的用户名和密码,下次再推送的时候就会自动登录,而不会让我们登录GitHub账号,这时因为windows操作系统有一个凭据管理器记住了GitHub的账号信息,这时我们可以将操作系统的凭据管理器中记录的账号信息删除用以重新登录其他账号来切换GitHub账号信息,如下图所示:控制面板(大图标)->凭据管理器->windows凭据->普通凭据(凭据列表),删除相应的凭据即可,这时在推送时就会让你重新登录GitHub了
8、拉取(pull):pull其实是fetch和merge两个操作的合并
分步操作:先fetch后merge
①使用git fetch命令将远程库内容抓取过来:此时仅仅是读操作,是不会验证身份的
git fetch 远程库别名 远程分支名称
此时仅仅是将远程库的内容下载下来,并不会改变本地工作区的文件,即并没有和本地工作区的文件合并。
可以通过git checkout 远程库别名/分支命令切换到文件拉取的分支,并查看拉取下来的内容:说明拉取下来的内容会存放在本地的别名/分支中
②切换回工作区的分支(要合并的那个分支),执行merge操作:
git merge 远程库别名/远程库分支名
合并操作:使用pull
git pull 远程库别名 远程库分支名
注
:在改动的文件不是很多或者说不会产生冲突的时候可以使用pull,在改变的文件很多可能产生冲突的时候最好采用分步操作
9、协同开发时冲突的解决
冲突的产生:当多个人向同一个远程库推送内容时,如果这几个人修改的是同一个文件的同一个位置就会产生冲突,这时后推送的人在推送的时候就会产生错误,如下图所示:
解决办法:
①先将远程库的内容拉取至本地:
②解决冲突:将冲突文件中的特殊字符删除,改成我们需要的样子,然后提交至本地库,再推送至远程库即可
冲突解决的要点:
①如果不是基于 GitHub 远程库的最新版所做的修改,不能推送,必须先拉取
②拉取下来后如果进入冲突状态,则按照“分支冲突解决”操作解决即可
10、跨团队协作
①将项目的地址发送给团队外成员,地址的获取方式如下图所示:
②团队外成员在登录了自己的GitHub账号后访问通过①获取到的地址,然后执行Fork操作:
Fork中动画:
在Fork成功之后,左上角会出现下图所示的信息:
③Fork成功之后,团队外人员就在远程库中拥有了该项目,接下来就可以使用clone命令将该远程库克隆至本地的工作区,并执行相关的修改、提交、推送等操作:此时仅仅是在团队外人员自己的本地和自己的远程库所做的操作并不会影响被Fork的项目
④发起Pull Request
发起请求通知:
⑤团队管理员登录GitHub,就可以查看到推送申请:
⑥团队管理员可以点击每一条推送申请进行审核查看,并且可以发送消息给申请人,形成消息对话:
⑦管理员可以合并推送:
在合并之前可以先查看提交的内容和修改的内容:审核
⑧填写合并日志之后执行合并操作:此时就会将团队外人员的代码合并至团队的远程库
⑨拉取至本地即可: