目录

参考文章史上最简单的 GitHub 教程

1 安装Git,SSH绑定,部分记录截图

进入git官网下载git

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

在这里插入图片描述

Git安装

  • 设置安装路径

在这里插入图片描述

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

  • 其他选择全默认选项,这一项我选的分支main,因为在github上创建的都是main分支
    在这里插入图片描述

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

  • 最后一步,没选这些新功能
    在这里插入图片描述
    在这里插入图片描述

  • 安装好了,选择第一个,打开gitBash
    在这里插入图片描述
    在这里插入图片描述

  • 输入git命令,显示如下。Git已准备就绪!
    在这里插入图片描述

利用 SSH 完成 Git 与 GitHub 的绑定

  • 在Git上输入ssh,如图所示,此结果表示我们已经安装 SSH

在这里插入图片描述

输入ssh-keygen -t rsa命令,表示我们指定 RSA 算法生成密钥,然后敲三次回车键,期间不需要输入密码,之后就就会生成两个文件,分别为id_rsaid_rsa.pub,即密钥id_rsa和公钥id_rsa.pub. 对于这两个文件,其都为隐藏文件,默认生成在以下目录:

Linux 系统:~/.ssh
Mac 系统:~/.ssh
Windows 系统:C:\Documents and Settings\username\\.ssh
Windows 10 ThinkPad:C:\Users\think\.ssh

在这里插入图片描述

  • ssh生成的密钥和公钥
    在这里插入图片描述

密钥和公钥生成之后,我们要做的事情就是把公钥id_rsa.pub的内容添加到 GitHub,这样我们本地的密钥id_rsa和 GitHub 上的公钥id_rsa.pub才可以进行匹配,授权成功后,就可以向 GitHub 提交代码啦!

添加SSH key

如图所示,进入我们的 GitHub 主页,先点击右上角所示的倒三角▽图标,然后再点击Settins,进行设置页面;点击我们的头像亦可直接进入设置页面:
在这里插入图片描述
选择SSH and GPG keys 选 New SSH key 。图所示,我们只需要将公钥id_rsa.pub(记事本打开)的内容粘贴到Key处的位置(Titles的内容不填写也没事),然后点击Add SSH key 即可
在这里插入图片描述

检测Git与GitHub是否绑定成功

在这里插入图片描述

在这里插入图片描述

  • 连接后授权
    在这里插入图片描述

在这里插入图片描述

  • 添加成功了!
    在这里插入图片描述
  • 主页自动识别了语言添加了标签java
    在这里插入图片描述

2 两种通过Git将代码提交到GitHub的方法

  • 基础指令含义

push:该单词直译过来就是“推”的意思,如果我们本地的代码有了更新,为了保持本地与远程的代码同步,我们就需要把本地的代码推到远程的仓库,代码示例:

git push origin master

pull:该单词直译过来就是“拉”的意思,如果我们远程仓库的代码有了更新,同样为了保持本地与远程的代码同步,我们就需要把远程的代码拉到本地,代码示例:

git pull origin master

注:
origin为远程仓库名,即github上创建的仓库
一般情况下,我们在push操作之前都会先进行pull操作,这样不容易造成冲突。

2.1 本地没有 Git 仓库,通过Git将代码提交到GitHub

(1) 创建远程仓库的方式

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

(2) 提交代码

这时我们就可以直接将远程仓库clone到本地。通过clone命令创建的本地仓库,其本身就是一个 Git仓库了,不用我们再进行init初始化操作,而且自动关联远程仓库。
我们只需要在这个仓库进行修改或者添加等操作,然后commit提交即可。

  • 1.获取远程仓库地址(我直接用已经创建好的仓库java-basic02)
    在这里插入图片描述
    在这里插入图片描述
  • 2.进入Git Bash,将远程仓库java-basic02克隆到本地文件夹qx-warehouse下,因为是克隆的远程仓库,所以克隆过来的java-basic02是一个本地仓库,无需进行init初始化成一个仓库

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

输入指令后回车

在这里插入图片描述

在这里插入图片描述

打开克隆到本地的仓库java-basic02
.git文件夹说明他所在文件夹是一个git仓库

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

  • 3.将代码提交到本地仓库java-basic02
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
在输入git status命令后显示有两个文件未被追踪,
也就是我们刚刚复制过来的src文件没有提交。
在真正提交代码之前,需要先进行git add操作,
git add命令并没有把文件提交到 Git 仓库,而是把文件添加到了「临时缓冲区」

在这里插入图片描述
git log 查看仓库日志,按q退出日志
在这里插入图片描述

  • 4.已经将代码提交到本地仓库了,我们将本地仓库的内容push到远程仓库,输入git push java-basic02 main命令:

在这里插入图片描述

如果上句运行正常,又是第一次向远程仓库提交代码的时候,
会弹出验证窗口。如果浏览器正在登着github账号,直接选浏览器验证即可,验证后如下
然后检查远程仓库有刚push的内容就成功了

在这里插入图片描述

如果不正常,我这里是不正常,报错显示java-basic02不是一个库
应该是克隆过来自动关联出错了,就重新添加一下远程关联的库
git remote add java-basic02 地址
地址就是远程仓库java-basic02的code->https那里复制

参考这篇解决git 操作报错(fatal: ‘xxx’ does not appear to be a git repository)

在这里插入图片描述

  • 重新连接本地仓库与远程仓库

在这里插入图片描述

  • 第一次链接需要登录一下github账号

在这里插入图片描述

在这里插入图片描述

检查远程仓库
发现已经push成功刚刚提交到本地仓库的src

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

最后咋们就是说,检查了一下远程仓库跟本地仓库内容完全一样,src也在!
就是一整个美美成功

2.2 本地有 Git 仓库,并且我们已经进行了多次commit操作,通过Git将代码提交到GitHub

简述:
在本地新建项目,并init初始化成本地仓库。
根据远程仓库的地址,remote关联远程仓库
改本地仓库默认分支master为main,再把远程代码pull拉到本地,保持同步
最后将本地仓库push填到远程仓库

(1)初始化本地仓库,并关联远程仓库

  • 新建一个文件夹作为本地仓库,这里创建文件夹barbie-diary作为本地仓库与远程仓库java-basics关联
    在这里插入图片描述
  • 在github上点击头像->Your profile 打开主页,选择仓库->选择一个前面创建好的远程仓库,这里选择java-basics
  • 或者在主页有显示最近的仓库,直接点击打开也可以
    在这里插入图片描述

在这里插入图片描述

  • 打开以后,复制该远程仓库的地址
    在这里插入图片描述

  • 打开git
    在这里插入图片描述

  • git init把当前文件夹初始化成一个仓库,初始化过后文件夹中会有一个.git文件夹,说明此文件夹是一个本地仓库。

  • git remote add 远程仓库名 远程仓库地址关联本地和远程,注意,赋值远程仓库地址时右键选择paste,不可以Ctrl+V

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

  • 再次查看远程关联git remote -v

在这里插入图片描述

■ 此处可能出现的问题(如果未出现就跳过这一步直接看2.): 把本地仓库的默认分支master重命名为main

我们的远程仓库默认分支是main,但init初始化的本地仓库分支为master 需要将master改为main

在这里插入图片描述
在这里插入图片描述
参考文章把git的默认分支master修改成main
注意: 个人目前理解,默认分支即主分支

1) 修改已创建项目的主分支为main

git branch查看仓库的分支情况,名称前带*的为主分支
看后缀如果不在master分支下,则git checkout master切换到主分支master
重命名分支master为main: git branch -M main

修改成功的效果
在这里插入图片描述
过程
在这里插入图片描述
在这里插入图片描述

2 ) 一次性修改,把默认分支改为main,这样之后再初始化本地仓库主分支都会是main而不是master
需要使用2.28版本以后的git
windows中git的配置文件在C:\Users\<用户名>

在这里插入图片描述
添加这句,然后Cirl+S保存

[init]
	defaultBranch = main

如图
在这里插入图片描述
经过上面的修改, 当我们使用git init初始化某个项目的时候, 默认就会使用main做为主分支
除了手动修改配置文件外, 也可以使用git命令, 效果和手动修改没区别

git config --global init.defaultBranch main

方法2)只是让以后创建的项目默认分支为main, 但对于已经创建的项目则无能为力
因为现在的远程仓库分支是main,在Bash执行一些操作时,需要将教程中部分指令的master改为main

(2) 同步远程仓库和本地仓库,即把远程代码拉到本地。并且提交代码到本地仓库

  • 输入git pull java-basics main命令,将远程仓库的内容同步到本地仓库

在这里插入图片描述

  • 同步成功,观察本地仓库拥有了与远程仓库一样的内容
    在这里插入图片描述

  • 如上图所示,显然我们已经把远程java-basics仓库里面的README.md文件和src同步到了本地仓库。接下来,在本地仓库粘贴src文件,里面是本次想提交的代码。如果直接粘贴另一个项目的src将覆盖之前的,所以重命名新的srclist

在这里插入图片描述

  • 下次提交时,同样来到文件夹,先把要提交的代码放到粘贴到文件夹中,我一般是粘贴项目的src文件夹,然后成准备放在远程仓库的项目名,此处改为10_IO

在这里插入图片描述

  • 输入git add 文件名和git commit -m "add 文件名 file"命令,将文件list添加并提交到barbie-diary本地仓库:
    在这里插入图片描述

(3) 将本地仓库添加(或者修改)的内容提交到远程仓库**

  • 前面已经将代码提交到了本地仓库,现在提交到远程仓库
    输入git push java-basics main命令,将本地仓库修改(或者添加)的内容提交到远程仓库:
    在这里插入图片描述

■ push出现的问题,产生原因:一般是这是因为服务器的SSL证书没有经过第三方机构的签署,所以才报错

参考网上解决办法:解除ssl验证后,再上传就OK了

git config --global http.sslVerify "false"

在这里插入图片描述
如图,已经将本地仓库barbie-diary的内容同步到了远程仓库java-basics。
在这里插入图片描述

❤ 安装好后,日常提交代码❤

日常检查
git status
git log q退出
步骤1: 将要提交的代码(文件or文件夹)拖进之前初始化同步好的本地库内(和远程库同名),在本地库中右键git bush
,
步骤2: 提交到缓冲区

git add [文件名]

步骤3: 提交缓冲区到本地库

git commit -m "add [文件名] file"

步骤4: 将全部提交推送

git push [库名] [分支名](一般为main)

删除库中代码并同步

[]中需自己替换对应
步骤1: 在本地库中右键git bush
用rm删除文件

 git rm [要删除的文件路径]

步骤2: 提交删除到本地库

git commit -m "删除文件 [要删除的文件名]"

步骤3: 推送操作到远程github库

git push [远程库名] [分支名]

3 过程中遇到的问题+解决方法

1)git使用commit命令后显示Author identity unknown的解决方法

在这里插入图片描述
在git命令行中重新输入命令:
先输入:$ git config --global user.name “你的名字”
回车后,
再输入:$ git config --global user.email “你的邮箱地址”
完成后再提交就没问题了。
在这里插入图片描述

2)error: key does not contain a section: –-global

在这里插入图片描述

输入- - global 的时候, 用自己的键盘敲出来!多敲几次,确认没有打错

3)fatal: unable to access ‘https://github.com/xxxx/java-basics.git/’: Failed to connect to github.com port 443 after 21091 ms: Timed out

原因:
因为git在拉取或者提交项目时,中间会有git的http和https代理,但是我们本地环境本身就有SSL协议了,所以取消git的https代理即可,不行再取消http的代理。
原因还有一个,当前代理网速过慢,所以偶尔会成功,偶尔失败。

解决方法:

git config --global --unset http.proxy
git config --global --unset https.proxy

在这里插入图片描述

4)fatal: unable to access ‘https://github.com/xxxxx/java-basics.git/’: OpenSSL SSL_read: Connection was reset, errno 10054

原因:
取消git本身的https代理,使用自己本机的代理,如果没有的话,其实默认还是用git的

解决方法:

git config --global http.sslVerify "false"
git config --global --unset http.proxy
git config --global --unset https.proxy

在这里插入图片描述

5) fatal: unable to access ‘https://github.com/1xxxxxxx用户名/库名.git/’: Recv failure: Connection was reset

参考完美解决,fatal unable to access ‘httpsgithub.comxxxxxxxxxxx.git’ Recv failure Connection was reset
说明:不能进入这个git仓库,连接被重设(重新设置)了

删除代理,如果本身你没有开代理,那就不要配置代理信息
先查看git配置

git config --global -l
git config --global --unset.http.proxy
git config --global --unset.https.proxy

从Windows搜索中输入打开cmd,将ipconfig/flushdns复制,点击回车,清理DNS缓存
成功解决!

6) fatal: Unable to create ‘……/.git/index.lock’: File exists.

解决方法参考:git的坑–fatal:Unable to create“…/.git/index.lock“ 的错误
因为commit的时候,输错了,没有带-m
导致错误,手动删除index文件即可rm -rf ……/.git/index.lock

在这里插入图片描述

7)查看状态时,有deleted提醒,log查看q退出

在这里插入图片描述
查看发现本地文件夹没有这几个文件,但远程仓库有。所以报错
使用git pull DailyCode main 拉取后查看仓库状态依然报红。
报错显示,本地我的branch比远程origin领先6个提交。其中除了June5是还未提交的,其他5个都是本地已经删掉的。

可以采取两种措施
1,删掉远程仓库多出的
"git add/rm <file>..."更新将提交的内容,即删除操作
2,取消本地要删除的操作,即恢复本地手动删除但没同步成功的文件
"git restore <file>..."放弃工作目录的更改

在这里插入图片描述

彻底删除的步骤

  1. "git rm <file>..."多次,有几个文件敲几次
    在这里插入图片描述
    删除请求全部提交后,统一一次提交到本地库

  2. $ git commit -m "删除文件 Code03_DoubleEndsQueueToStackAndQueue.java"提交一次删除文件的操作到本地库

  3. 再push一次,提交本地操作到远程库git push 库名 分支名$ git push DailyCode main

在这里插入图片描述

?问题: git status查看状态依然显示有7个提交没有推送,因为刚刚push提交完,仅仅只是本地git状态不一致git fetch --all解决同步一下

在这里插入图片描述

验证结果

远程仓库,删除前
在这里插入图片描述

删除并同步状态后

在这里插入图片描述

4 两个module分别add,commit只需要一次就行

在这里插入图片描述

5 本地仓库在D盘爆满了,换到C盘

直接剪切到目标就行
然后
git states
git remove -v检查就行

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐