【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验证是否推送成功

 

posted @ 2021-01-06 18:02  尘封~~  阅读(103)  评论(0编辑  收藏  举报