【Git&GitHub 本地库和远程库交互 02】
一、Git本地库和GitHub远程库进行交互(团队内部合作)
按照下图的思路进行交互
1、项目经理创建一个本地库(huashan)
-->初始化本地库
-->新建一个文件
-->提交此文件到暂存区,在提交到本地库
2、项目经理在创建一个远程库 (登录https://github.com/ 后然后创建)
-- > 创建远程库:New repository
--> 复制远程库的地址 ( https://github.com/cswufq2021ybu/huashan.git)
3、项目经理创建远程库地址别名 (远程库的地址太长,为了方便我们需要在本地库起一个别名,已方便后面的克隆,推送等操作)
--> git remote -v 查看当前库所有远程地址别名
--> git remote add [别名] [远程名]
4、推送(本地库文件推动到远程库) : git push [别名] [分支名]
5、项目组成员A克隆远程库的master分支的代码,想进行编程
1)创建一个本地仓库
2)克隆远程库的仓库 (命令:git clone [远程地址])
克隆的效果:
--> 完整的把远程库下载到本地
--> 创建origin远程库别名
--> 初始化本地库(即:创建了.git文件夹)
6、项目经理邀请此团队成员A加入团队,才能进行推送编程的文件,然后A成员推送编程文件
1)项目经理登录github -->进入仓库点击settings --> 点击Manage access -->点击invite a collaborator --> 输入被邀请人A的GitHub的用户名
2)复制邀请的链接发送给A -->A登录自己的github地址,接受邀请(这时候A会受到邮件,也可以通过邮件查看邀请登录github)
3)A推送自己编写的文件到远程库
7、A推送自己的代码成功以后,项目经理需要pull(拉取)
1)git客户端进入到项目经理自己的本地库文件目录
备注:pull分两步:抓取(fetch)+合并(merge) (即: pull =fetch+merge)
2)抓取 fetch (抓取远程库master文件,这时候并没有改变本地库文件的内容) -->git fetch [远程库地址别名] [远程分支名]
3)合并merge (把远程库master文件合并到本地库文件,这时候改变了本地库文件的内容) --> git merge [远程库地址别名/远程分支名]
4)git pull [远程库地址别名] [远程分支名] -->不太会冲突的时候直接使用full就可以了,如果有冲突的时候最好还是先fetch然后在merge
注意:这里面有一个坑,执行完git fetch origin master命令以后并且切换到origin/master分支以后,需要切换回master后,
才能git merge origin/master。如果不切换的话是没有从远程库拉回到本地的
8、协同开发是冲突的解决
产生冲突的原因:两个人修改同一个文件,A先修改了然后推送到远程库,B不知晓A已经修改了,
仍然在上一版本的基础上进行的修改,B修改后推送远程库,这时候就会冲突
如何解决:
1)B拉取远程库的代码 --> git pull origin master
2) B和A协商修改冲突的文件
3)B推送文件到远程库 --> git push origin master
要点:如果不是基于github远程库最新版本做的修改,不能推送,必须先进行拉取
拉取下来如果进入冲突,则按照冲突解决办法进行解决
二、跨团队合作
1、先复制项目经理的仓库地址
2、跨团队成员C登录GitHub-->然后在浏览器的地址栏粘贴上一步复制的地址-->点击Fork
3、成员C本地新建一仓库-->克隆远程库-->修改文件-->提交本地库-->push到远程库
注意:C用户push时会报“remote rejected(没有权限)”的错误,原因在于:git第一次push时电脑都会记住github的密码,所以切换账号以后需要在电脑删除GitHub的密码
以Mac本为例:打开Finder ----> 应用程序 ---->实用工具 ---->钥匙串访问-->找到github.com-->右键删除
4、成员C在GitHub内点击Pull request -->点击new pull request -->点击Create pull request -->输入title和文本,点击 Create pull request
5、项目经理登录GitHub点击Pull request-->点击C创建的pull request -->这时候可以和C进行对话
6、项目经理代码审查
7、项目经理合并代码,点击Conversation --> merge pull request-->填写本次操作日志 -->点击Confirm merge-->当合并操作完成之后,先前绿色的Open
标识,变为紫色的Merged
标识。
查看合并的操作记录
8、将远程库修改拉取到本地 -->git pull origin master
三、SSH登录
1、进入到ssh目录,查看是否存在 id_rsa和 id_rsa.pub这两个文件
$ cd ~/.ssh
$ ls -l
2、如果存在,就删掉
rm -rf id_rsa id_rsa.pub
3、运行命令生成.ssh密钥目录
ssh-keygen -t rsa -C cswufq2021ybu@sohu.com
cswufq2021ybu@sohu.com指Git注册的邮箱地址
4、进入到ssh目录,查看id_rsa.pub文件,并复制里面的内容
5、登录GitHub,选择进入创建的项目,选择右边的settings选项
6、选择Deploy keys,点击add deploy key 添加key
7、title随便写,用来标识key的来源,然后把刚才复制的id_rsa.pub内容直接粘贴到key里面,不要敲任何其他的按钮,点选Allow write access。
然后点击add key。创建完成SSH的Key了
8、添加账户的SSH Keys -->页面右上角头像点击 Settings,进入账户设置中心
-->选择左侧的SSH and GPG keys,点击New SSH key 添加key,同样输入key的名称和复制的id_rsa.pub内容。
9、检测是否配置成功,在终端输入ssh -T git@github.com,如果出现下面这句话,就说明配置成功了。
10、回到终端,创建远程地址别名
git remote add origin_ssh git@github.com:cswufq2021ybu/huashan.git
11、修改文件,然后推送文件
vi huashanjianfa.txt git add huashanjianfa.txt git commit -m "ssh-test" huashanjianfa.txt git push origin_ssh master
12、登录GitHub验证是否推送成功