• Git实操图文详解系列教程(2)——GitHub核心操作



    版权声明

    • 本文原创作者:谷哥的小弟
    • 作者博客地址:http://blog.csdn.net/lfdfhl

    开发环境

    本系列教程所涉开发环境,详情如下:

    • 1、Win10
    • 2、JDK1.8
    • 3、Git2.31.1
    • 4、IDEA 2021.2.1

    参考资料

    本系列教程在撰写过程中所涉及参考资料,详情如下:

    https://git-scm.com/book/zh/v2

    http://git.oschina.net/progit/

    https://www.liaoxuefeng.com/wiki/896043488029600

    https://marklodato.github.io/visual-git-guide/index-zh-cn.html


    GitHub概述

    GitHub是一个面向开源及私有软件项目的托管平台,因为只支持Git作为唯一的版本库格式进行托管,故名GitHub。作为开源代码库以及版本控制系统,Github拥有超过900万开发者用户。随着越来越多的应用程序转移到了云上,Github已经成为了管理软件开发以及发现已有代码的首选方法。

    官方网站

    https://github.com/

    在这里插入图片描述

    准备工作

    请自行注册GitHub账号。

    友情提示

    由于网络原因,GitHub操作可能出现异常或失败;请耐心尝试。

    本地仓库

    在本地创建名为GitDemo的文件夹作为本地仓库;图示如下:

    在这里插入图片描述
    点击进入GitDemo文件夹利用Git init命令初始化本地仓库;图示如下:

    在这里插入图片描述
    初始化完成后会自动生成.git隐藏文件。

    远程仓库

    我们将GitHub作为远程仓库并进行相关操作。

    创建远程仓库

    点击+号创建远程仓库;图示如下:

    在这里插入图片描述

    填写远程仓库相关信息;建议远程仓库名与本地仓库保存一致;图示如下:

    在这里插入图片描述

    创建完毕,我们以后可通过HTTPS或者SSH的方式访问此远程仓库;图示如下:

    在这里插入图片描述

    本远程仓库的HTTPS为:https://github.com/rainbowzebra/GitDemo.git

    本远程仓库的SSH为:git@github.com:rainbowzebra/GitDemo.git

    配置远程仓库别名

    为便于日后访问,我们可为远程仓库配置别名。

    配置远程仓库别名,通常情况下别名与仓库名保持一致;语法如下:

    git remote add 别名 远程地址
    
    • 1

    示例如下:

    在这里插入图片描述

    yy@lf MINGW64 /d/GitWorkSpace/GitDemo
    $ git init
    Initialized empty Git repository in D:/GitWorkSpace/GitDemo/.git/
    
    yy@lf MINGW64 /d/GitWorkSpace/GitDemo (master)
    $ git remote add GitDemo https://github.com/rainbowzebra/GitDemo.git
    
    yy@lf MINGW64 /d/GitWorkSpace/GitDemo (master)
    $
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    查看当前所有远程仓库别名,语法如下:

    git remote -v
    
    • 1

    示例如下:

    在这里插入图片描述

    推送本地分支至远程仓库

    远程仓库虽然有了,但是里面是空的。现在,我们先在本地仓库进行文件操作再将其推送至远程仓库。

    编写test.txt

    在GitDemo中新建test.txt并在其中编写内容;图示如下:

    在这里插入图片描述

    在这里插入图片描述

    添加test.txt

    将工作区的新增文件添加至暂存区,语法如下:

    git add 文件名
    
    • 1

    示例如下:

    在这里插入图片描述

    提交test.txt

    将暂存区的文件提交至本地库;语法如下:

    git commit -m "日志信息" 文件名
    
    • 1

    示例如下:
    在这里插入图片描述

    推送至远程仓库

    在完成本地操作后,我们将分支推送至远程仓库;语法如下:

    git push 远程仓库完整地址或别名 分支名
    
    • 1

    示例如下:

    在这里插入图片描述

    登录GitHub,图示如下:

    在这里插入图片描述
    点击同意授权,图示如下:

    在这里插入图片描述
    授权成功;图示如下:

    在这里插入图片描述
    之前的推送可能发生错误;所以,再次推送;图示如下:

    在这里插入图片描述
    推送成功后可在GitHub上查看相关代码;图示如下:

    在这里插入图片描述
    在这里插入图片描述

    过程梳理与小结

    • 1、利用git add命令将新增文件添加至暂存区
    • 2、利用git commit 命令提交代码至本地库
    • 3、利用git push命令提交本地分支至远程仓库

    拉取远程分支至本地仓库

    我们在GitHub中修改已有文件test.txt并保存,再将其拉取到本地分支。

    修改远程文件

    修改test.txt文件,图示如下:

    在这里插入图片描述
    提交test.txt文件,图示如下:

    在这里插入图片描述
    提交test.txt成功,图示如下:

    在这里插入图片描述

    拉取远程分支

    语法如下:

    git pull 远程仓库完整地址或别名 分支名
    
    • 1

    示例如下:

    在这里插入图片描述
    拉取成功后,我们再查看本地仓库的test.txt文件;图示如下:

    在这里插入图片描述

    过程梳理与小结

    • 1、远程仓库的代码发生变化
    • 2、利用git pull命令拉取远程代码至本地

    克隆远程仓库至本地

    在实际工作中我们常需要克隆clone远程仓库至本地。克隆clone时无需使用GitHub账号与密码;而且该过程中可自动完成以下工作:

    • 1、初始化本地仓库
    • 2、自动为远程仓库创建别名(例如:origin)
    • 3、拉取远程仓库的代码至本地

    语法如下:

    git clone 远程仓库完整地址
    
    • 1

    示例如下:

    我们在任意一个新文件夹(例如:TestClone)中执行克隆clone命令;图示如下:

    在这里插入图片描述
    克隆完成后在TestClone中自动有了GitDemo文件夹,打开GitDemo文件夹;图示如下:

    在这里插入图片描述
    至此,克隆操作已经完成。

    邀请他人加入团队

    在开发过程中我们进场邀请其他人加入自己的团队;详细操作流程如下。

    发起邀请

    管理团队成员;图示如下:

    在这里插入图片描述

    再次登录;图示如下:
    在这里插入图片描述
    添加团队成员;图示如下:

    在这里插入图片描述
    输入被邀请者的GitHub账号;图示如下:

    在这里插入图片描述
    在这里插入图片描述
    复制邀请链接;图示如下:

    在这里插入图片描述

    复制后得到如下邀请链接:

    https://github.com/rainbowzebra/GitDemo/invitations

    接受邀请

    请利用任意通信手段将该邀请链接发送至团队成员;团队成员收到后登录GitHub并在浏览器中打开该链接并接受要求;图示如下:

    在这里插入图片描述
    至此,成功邀请其它人加入团队;图示如下:

    在这里插入图片描述

    SSH免密登录

    在之前的操作中,我们发现除了HTTPS以外还可以用SSH的方式登录远程仓库;图示如下:

    在这里插入图片描述

    删除原本.ssh

    请进入到当前用户(例如yy)的家(根)目录,查看是否有.ssh文件夹,如果有则将其删除;图示如下:

    在这里插入图片描述

    创建新的.ssh

    请在该当前用户(例如yy)的家(根)目录下右键选择Git Bash Here;图示如下:

    在这里插入图片描述
    运行命令生成.ssh 秘钥目录,语法如下:

    ssh-keygen -t rsa -C 登录GitHub时使用的用户名
    
    • 1

    请注意:此处-C中是大写的 C

    代码如下:

    ssh-keygen -t rsa -C lfdfhl@gmail.com
    
    • 1

    请注意:输入该命令行连续敲击三次回车

    结果如下:

    在这里插入图片描述
    请打开.ssh文件夹中的id_rsa.pub文件并复制全部内容,图示如下:

    在这里插入图片描述

    填写秘钥

    请登录 GitHub依次点击用户头像→Settings→SSH and GPG keys;图示如下:

    在这里插入图片描述
    选择新增SSH key;图示如下:

    在这里插入图片描述
    填写Title与Key;其中Title无明确要求可自定义;Key为刚才新生成的秘钥;图示如下:

    在这里插入图片描述
    创建成功,图示如下:

    在这里插入图片描述
    设置完成后,点击SSH即可看到与之对应的链接;图示如下:

    在这里插入图片描述

    验证测试

    在GitDemo中添加hello.txt并push至远程仓库;图示如下:

    在这里插入图片描述
    流程如下:

    • 1、利用git add命令将新增文件添加至暂存区
    • 2、利用git commit 命令提交代码至本地库
    • 3、利用git push命令提交本地分支至远程仓库

    代码如下:

    在这里插入图片描述

    
    yy@lf MINGW64 /d/GitWorkSpace/GitDemo (master)
    $ git add hello.txt
    
    yy@lf MINGW64 /d/GitWorkSpace/GitDemo (master)
    $ git commit -m "hello first commit" hello.txt
    [master fb58471] hello first commit
     1 file changed, 1 insertion(+)
     create mode 100644 hello.txt
    
    yy@lf MINGW64 /d/GitWorkSpace/GitDemo (master)
    $ git push GitDemo master
    fatal: unable to access 'https://github.com/rainbowzebra/GitDemo.git/': OpenSSL SSL_read: Connection was reset, errno 10054
    
    yy@lf MINGW64 /d/GitWorkSpace/GitDemo (master)
    $ git push GitDemo master
    fatal: unable to access 'https://github.com/rainbowzebra/GitDemo.git/': Failed to connect to github.com port 443: Timed out
    
    yy@lf MINGW64 /d/GitWorkSpace/GitDemo (master)
    $ git push GitDemo master
    Enumerating objects: 4, done.
    Counting objects: 100% (4/4), done.
    Delta compression using up to 4 threads
    Compressing objects: 100% (2/2), done.
    Writing objects: 100% (3/3), 272 bytes | 90.00 KiB/s, done.
    Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
    To https://github.com/rainbowzebra/GitDemo.git
       7f8b64f..fb58471  master -> master
    
    yy@lf MINGW64 /d/GitWorkSpace/GitDemo (master)
    $
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

    小结

    • 1、利用SSH免密的方式push代码时就不需要再输入账号和密码了
    • 2、在push过程中如果出现Timed out 超时错误;请再次重试即可
  • 相关阅读:
    【docker】私有仓库搭建
    我要写整个中文互联网界最牛逼的JVM系列教程 | 「JVM与Java体系架构」章节:虚拟机与Java虚拟机介绍
    Redis 主从搭建
    软件测试面试大家是不是一问到项目就不会了?
    检测零件的缝隙中是否有异物
    北京十大靠谱律师事务所最新排名(2022前十推荐)
    【计算机视觉40例】案例34:勾勒五官轮廓
    华为云云耀云服务器L实例评测|Ubuntu 22.04部署edusoho-ct企培版教程 | 支持华为云视频点播对接CDN加速
    58、RbbitMQ(结构和概念以及mq界面:15672)
    [第五空间 2021]web 复现wp
  • 原文地址:https://blog.csdn.net/lfdfhl/article/details/125828810