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

Posted 谷哥的小弟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Git实操图文详解系列教程——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 别名 远程地址

示例如下:

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)
$

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

git remote -v

示例如下:

推送本地分支至远程仓库

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

编写test.txt

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

添加test.txt

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

git add 文件名

示例如下:

提交test.txt

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

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

示例如下:

推送至远程仓库

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

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

示例如下:

登录GitHub,图示如下:


点击同意授权,图示如下:


授权成功;图示如下:


之前的推送可能发生错误;所以,再次推送;图示如下:


推送成功后可在GitHub上查看相关代码;图示如下:


过程梳理与小结

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

拉取远程分支至本地仓库

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

修改远程文件

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


提交test.txt文件,图示如下:


提交test.txt成功,图示如下:

拉取远程分支

语法如下:

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

示例如下:


拉取成功后,我们再查看本地仓库的test.txt文件;图示如下:

过程梳理与小结

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

克隆远程仓库至本地

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

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

语法如下:

git clone 远程仓库完整地址

示例如下:

我们在任意一个新文件夹(例如: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时使用的用户名

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

代码如下:

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

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

结果如下:


请打开.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、利用SSH免密的方式push代码时就不需要再输入账号和密码了
  • 2、在push过程中如果出现Timed out 超时错误;请再次重试即可

以上是关于Git实操图文详解系列教程——GitHub核心操作的主要内容,如果未能解决你的问题,请参考以下文章

Git实操图文详解系列教程——IDEA集成GitHub

Git实操图文详解系列教程——IDEA集成GitHub

Git实操图文详解系列教程——Git原理与实践

Git实操图文详解系列教程——IDEA集成Git

Git实操图文详解系列教程——IDEA集成Git

Git实操图文详解系列教程——Git原理与实践