【尚硅谷】Git与GitHub基础全套完整版教程笔记3-GitHub操作

5 篇文章 2 订阅

【尚硅谷】Git与GitHub基础全套完整版教程-笔记2中介绍了git的分支管理和Git的基本原理(保存机制和分支机制)等,分支是Git中十分重要的内容,接下来具体看看如何在实际操作中管理自己的远程库,以GitHub操作为例。

目录

6 GitHub

6.1 账号信息

6.1.1 修改GitHub账号头像

6.1.2 本地库和远程库交互方式回顾

6.1.3 初始化新的本地库

6.2 创建远程库

6.3 创建远程库地址别名

6.4 推送操作

6.5 克隆操作

6.6 团队成员邀请(邀请用户才能提交)-邀请令狐冲加入

6.7 远程库修改的拉取

6.8 解决协同开发时的冲突

6.9 跨团队协作操作演示

6.10 SSH 登录记录用户(如果http地址不能记录登录用户)  


6 GitHub

6.1 账号信息

之前讲解了git本地操作,接下来看看如何远程操作。注册GitHub时先要有一个邮箱(最好是不用163邮箱,可能收不到邮件)。在首页就可以进行注册。

GitHub 首页就是注册页面:https://github.com/

岳不群

Email 地址:atguigu2018ybuq@aliyun.com

GitHub 账号:atguigu2018ybuq 

令狐冲

Email 地址:atguigu2018lhuc@aliyun.com

GitHub 账号:atguigu2018lhuc

东方不败

Email 地址:atguigu2018east@aliyun.com

GitHub 账号:atguigu2018east

6.1.1 修改GitHub账号头像

找到GitHub页面右上角头像,点头像右边的三角。

点击Your profile,点左上角头像,然后点右上角头像位置的Edit,点击Upload a photo,在本地文件中选择自己的头像。

6.1.2 本地库和远程库交互方式回顾

6.1.3 初始化新的本地库

为了测试远程交互初始化新的本地库,使用git init初始化,实际操作代码如下:

$cd .. //返回上一级目录

$mkdir huashan //创建新目录

$cd huashan/ //进入目录

$git init //初始化

$vim huashanjianfa.txt //新建文件

$git add huashanjianfa.txt

$git commit -m "test github" huashanjianfa.txt

6.2 创建远程库

远程库不一定和本地库一个名字,但是一个名字方便识别。登录GitHub。(岳不群账号)

第一次创建需要邮箱验证。

Owner是仓库的所有者。Repository name是仓库名。Private私有库是收费的。上码云(https://gitee.com)个人使用时免费的,不管是私有还是共有的。

6.3 创建远程库地址别名

本地push到远程必须知道远程库的位置,回到GitHub,复制下图的远程地址。先看http形式,不看ssh

实际操作代码: 

$git remote -v //没有任何提示

$git remote add origin [刚刚复制的http] https://github.com/atguigu2018ybuq/huashan.git

一般格式为:

git remote -v  //查看当前所有远程地址别名

git remote add [别名origin] [远程地址]

6.4 推送操作

一般格式:git push [远程库别名] [分支名] 

实际操作代码:

$git push origin master  /*目前只有master分支,回车可能需要等待一会,弹出对话框,接着输入用户和密码

//此时在GitHub页面刷新一下,能看到内容

 结果:

6.5 克隆操作

一般命令为:  git clone [远程地址] 

实际操作:

$cd //离开huashan这个目录,不能在岳不群的文件夹下

$mkdir huashan_lhuc //新建令狐冲的文件夹

$cd huashan_lhuc //进入令狐冲的目录

​$git clone [复制的远程地址]https://github.com/atguigu2018ybuq/huashan.git

成功:

$ll //本地有了huashan目录

$cd huashan/

$ll //可以看到huashanjianfa.txt

$ls -lA //还有.git目录这个隐藏文件,代表我们不需要初始化了

$git remote -v

//origin https://github.com/atguigu2018ybuq/huashan.git (fetch)

//origin https://github.com/atguigu2018ybuq/huashan.git (push)

克隆的三个效果:

(1)完整的把远程库下载到本地

(2)创建 origin 远程地址别名 (git remote -v查看远程库别名)

(3)初始化本地库(就是git init)

6.6 团队成员邀请(邀请用户才能提交)-邀请令狐冲加入

$vim huashanjianfa.txt //在本地的令狐冲文件夹下修改文件

$git add huashanjianfa.txt

$git commit -m "test push" huashanjianfa.txt

//目前令狐冲暂时还不可以把修改推送到远程,没有权限

$git push origin master //输入令狐冲账号和密码

//error:403

岳不群把令狐冲加入团队

打开GitHub远程仓库。

点击Settings,点击Manage access中的Add people。

输入邀请人的GitHub账号,点Select a collaborator above。

跳转界面之后点Copy invite link,用邮箱(微信、qq等)把复制的东西发送给令狐冲。

“岳不群”其他方式把邀请链接发送给“令狐冲”,“令狐冲”登录自己的 GitHub 账号,访问邀请链接。

点击Accept invitation,这样令狐冲就变成了远程项目的团队成员,然后在执行推送。

$git push origin master //再次推送(没有提示输入令狐冲账号和密码),成功

注意一个小细节:推送了第一次在此推送不要输入用户名,git 本身不具备记录功能,Windows中凭据管理器记录用户名和密码,通过“控制面板-用户账户-凭据管理器”,Windows凭据,“普通凭据”中记录了GitHub的密码。想要切换别的账号可以先删掉这里保存的密码。

 如果想切换用户,需要先删除记录。

6.7 远程库修改的拉取

一般格式:

git fetch [远程库地址别名origin] [远程分支名master]   /*抓取下来

git checkout origin/master   /*切换到链接地址(别名)的master(可查看抓取下来内容)

git checkout master  /*切换回master分支

git merge [远程库地址别名origin/master远程分支名]   /*合并

或者直接一行代码解决(pull=fetch+merge):

git pull [远程库地址别名] [远程分支名]   /*等于上面步骤

实际操作:

$pwd //现在是在令狐冲的目录下

$cd ../../huashan //退出来之后再进入岳不群的huashan目录

$cat huashanjianfa.txt

//华山剑法,天下第一! //此时因为令狐冲的pash,远程库有两行

$git fetch origin master //抓取远程库的master,不需要验证身份(只读操作)

$cat huashanjianfa.txt

//华山剑法,天下第一! //本地的内容并没有变,fetch只是下载到本地,并没有修改工作区。

$git checkout origin/master //查看下载的东西在哪,长什么样子

$cat huashanjianfa.txt

//华山剑法,天下第一!

//我是令狐冲,我比岳不群还厉害!

$git checkout master //切换回去

$cat huashanjianfa.txt

//华山剑法,天下第一!

//fetch有一个好处:当你操作比较复杂时,暂时先不对本地做合并,等查看从远程库下载的东西之后再去合并文件。

$git merge origin/master

$cat huashanjianfa.txt //合并完之后查看文件,本地有新的内容。

//华山剑法,天下第一!

//我是令狐冲,我比岳不群还厉害!

6.8 解决协同开发时的冲突

但凡是团队协作就一定会发生冲突。两个人修改了同一个文件的同一位置,只有先推送的人可以直接推送。

具体操作如下:

$vim huashanjianfa.txt //在岳不群文件夹下修改文件

$git commit -m "edit by ybuq" huashanjianfa.txt //提交到本地库

//删除电脑保存的账号和密码(令狐冲)

$git push origin master //以岳不群的身份 #需要输入岳不群的账号密码

//到GitHub的远程库刷新,看到内容被岳不群修改

//删除电脑保存的账号和密码(岳不群)

$cd ..

$cd huashan_lhuc/ //换成令狐冲去登录

$vim huashanjianfa.txt //在令狐冲文件夹下修改文件,也是这行。(此时令狐冲不知道岳不群修改了远程库,还是在旧版本在修改)

$git commit -m "test conflict" huashanjianfa.txt //提交到本地库

$git push origin master //令狐冲账号

//error

$git pull origin master //必须先拿到远程库的修改

$vim huashanjianfa.txt (merging状态) //查看文件,可以看到产生冲突的位置

//删除=====,修改文件

$git add huashanjianfa.txt

$git commit -m "resolve conflict" huashanjianfa.txt //注意这里解决冲突的时候是不带文件名的提交

$git status

$git push origin master

//到GitHub的远程库刷新,看到内容被岳不群和令狐冲修改

要点

如果不是基于 GitHub 远程库的最新版所做的修改,不能推送,必须先拉取。

pull拉取下来后如果进入冲突状态,则按照“分支冲突解决”操作解决即可。

类比

债权人:老王

债务人:小刘

老王说:10 天后归还。小刘接受,双方达成一致。

老王媳妇说:5 天后归还。小刘不能接受。老王媳妇需要找老王确认后再执行。

6.9 跨团队协作操作演示

1(先复制当前库地址,发式给dfbb,然后用dfbb账号登录,访问这个地址)->然后Fork 

正在fork的界面

fork 过来的仓库会多下面一行(forked from at...)说明fork来源。

2 dfbb(”东方不败”)本地修改,然后推送到远程 git push origin master

$cd..

$cd..

$mkdir huashan_east //新建东方不败的文件夹

$cd huashan_east/

$git clone https://github.com/atguigu2018east/hanshan.txt //注意是东方不败远程库的地址 clone是读操作,不需要登录

$ls -lA

$cd huashan/ //进入这个目录

$ls -lA     //有.git文件,本地化也初始化好了

$vim huashanjianfa.txt    //修改文件,增加新的内容,第5行

$git commit -m "kuihua" huashanjianfa.txt

$git push origin master    //注意先删除window凭据,现在用东方不败的账号密码

//到GitHub东方不败的远程库刷新,看到内容被东方不败修改

3  dfbb在远程库中选择Pull Request

然后点击里面的New pull requset

然后点击 Create pull request

然后发送消息给fork的库(ybq(岳不群))

4 重新打开岳不群的GitHub仓库,接下来ybq操作

5 查看pull requests

5.1可以看到东方不败发过来的消息

5.2 对话 (这时还可以相互对话)

6 审核代码

合并代码 (回到对话Conversation->合并操作如图)

点击Merge pull request

合并的时候填写相关信息,相当于commit时候的log。

然后点击Comfirm merge。

上面操作完了之后岳不群的远程库就有合并内容->然后->将远程库修改拉取到本地。

$cd huashan //切换到岳不群的文件夹

$git pull origin master //拉取到本地

$vim huashanjianfa.txt //能看到东方不败的修改

6.10 SSH 登录记录用户(如果http地址不能记录登录用户)  

SSH只能被一个账号设置

$cd ~ //进入用户的家目录

$rm -r .ssh/ //删除之前创建的ssh目录

$ssh-keygen -t rsa -C atguigu2018ybuq@aliyun.com //生成这个目录,后面需要确认的一路回车

$cd .ssh //进入这个目录

$ll //生成id_rsa和id_rsa.pub文件

$ cat id_rsa.pub

复制 id_rsa.pub 文件内容,登录 GitHub,然后点击用户头像→Settings→SSH and GPG keys

→New SSH Key,然后到key中输入复制的密钥信息,Title:自定义输入标题。

$git remote -v //现在还是http形式

$git remote add origin_ssh [ssh地址]git@github.com:atguigu2018ybuq/huashan.git //需要新建一个远程别名

$vim huashanjianfa.txt //修改文件

$git add huashanjianfa.txt

$git commit -m "test ssh login" huashanjianfa.txt

$git push origin_ssh master //往这个别名推送,输入yes确认,不用输入账号密码

总结一下上述的使用ssh操作过程

①进入当前用户的家目录

$ cd ~

②删除.ssh 目录

$ rm -rvf .ssh

③运行命令生成.ssh 密钥目录

$ ssh-keygen -t rsa -C atguigu2018ybuq@aliyun.com 

[注意:这里-C 这个参数是大写的 C]  3.2后面直接回车(使用默认)

④进入.ssh 目录查看文件列表

$ cd .ssh

$ ls -lF

⑤查看 id_rsa.pub 文件内容

$ cat id_rsa.pub

⑥复制 id_rsa.pub 文件内容,登录 GitHub,点击用户头像→Settings→SSH and GPG keys

→New SSH Key,然后在key中输入复制的密钥信息。 Title:自定义输入标题。

⑦回到工作区,创建远程地址别名

git remote add origin_ssh git@github.com:atguigu2018ybuq/huashan.git

⑧推送文件进行测试,输入yes确认

git push origin_ssh master

说明:记录学习笔记,如果错误欢迎指正!写文章不易,转载请联系我。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值