从 0 开始学习 Git + GitHub

首先说明一下,git 和 GitHub 是两个完全不同的概念,git 是一个版本管理工具,GitHub 是一个面向开源及私有软件项目的托管平台。因为Github是基于git做托管,所以大佬超带你在GitHub上创建我们的代码仓库来进行git的学习。


一、GitHub创建仓库

在这里插入图片描述

创建好仓库后,发现其中有 HTTPS 和 SSH 两种 Clone 方式。

  • HTTPS:拿到url就可以直接clone,但是在push的时候需要验证Github的用户名和密码。

  • SSH:Github 需要添加本机的 SSH key,如果配置SSH key的时候设置了密码,在push的时候需要输入密码,否则直接push。

两种方式的URL对比如下:

https://github.com/yangxch/im-api.git
git@github.com:yangxch/im-api.git

二、安装Git客户端

1、安装

https://git-scm.com/downloads,根据自己的版本选择安装。
在这里插入图片描述

2、配置身份

打开Git Bash,配置用户名和邮箱(用户名不一定是你github注册的账号,可以任意命名),这样在提交代码的时候Git就知道是谁提交的了,命令如下。

git config --global user.name "yangxch"
git config --global user.email "xch_yang@126.com"

git config –global 参数表示你这台机器上所有的Git仓库都会使用这个配置,当然你也可以对某个仓库指定的不同的用户名和邮箱。

配置完成后查看是否配置成功,只需要同样的命令去掉用户名和邮箱即可

在这里插入图片描述


三、为Github账户设置SSH key

ssh key是加密传输,git使用rsa,rsa就要涉及public key公钥以及private key私钥。

在本机生成了公钥之后上传到github。从github发回来的公钥加密过的数据,可以用本地的私钥来还原。

ps:如果其中一个丢了,则重新再生成一次,然后在github里再设置一次。


1、生成ssh key

输入: ssh-keygen -t rsa -C “邮箱”,如下

ssh-keygen -t rsa -C "chaodev@126.com"

在这里插入图片描述

注:这里如果设置了密码,在push的时候需要输入密码,否则直接push。

然后就会生成两个文件 id_rsa 和 id_rsa.pub , id_rsa 是密钥, id_rsa.pub 就是公钥。切换到.ssh目录下,路径以上面提示信息里路径为准,检查是否已生成,ls一下,如下

cd /c/Users/xch/.ssh/
ls

在这里插入图片描述

接下来要做的是把 id_rsa.pub 的内容添加到 GitHub 上,这样你本地的 id_rsa 密钥跟 GitHub 上的 id_rsa.pub 公钥进行配对,授权成功才可以提交代码。

在.ssh目录下,输入 clip < id_rsa.pub 会自动复制ssh key到剪切板

clip < id_rsa.pub

在这里插入图片描述

或者直接打开文件复制内容

在这里插入图片描述


2、GitHub 新建SSh key

进入Setting -> SSH and GPG keys ->New SSH key

在这里插入图片描述

在这里插入图片描述

Key里粘贴上一步复制的公钥,标题自定义。添加之后,如下
在这里插入图片描述


3、测试连接是否成功
ssh -T git@github.com

在这里插入图片描述

提示身份验证成功。

注:可以看到.ssh目录下生成了一个known_hosts文件,known_hosts是做服务器认证的,当你用ssh连接到一个新的服务器的时候,ssh会让你确认服务器的信息(域名、IP、公钥,如果你确认了,就会写到known_hosts里。

but GitHub does not provide shell access这个提示只是告诉你GitHub不提供shell访问,不影响。


四、上传本地项目到Github

添加 SSH key 成功之后,我们就有权限向 GitHub 上我们自己的项目提交代码了,而提交代码有两种方法:

方法一:

直接Clone自己的项目,以我在 GitHub 上创建的 test 项目为例,执行如下命令:

git clone git@github.com:yangxch/test.git

这样就把 test 项目 clone 到了本地,你可以把 clone 命令理解为高级点的复制,这个时候该项目本身就已经是一个git 仓库了,不需要执行 git init 进行初始化,而且已经关联好了远程仓库,我们只需要在这个 test 目录下任意修改或者添加文件,然后进行 commit ,之后就可以执行:

git push origin main

进行代码提交。


方法二:

打开Git Bash并进入项目目录后

执行初始化

git init

初始化成功后你会发现项目里多了一个隐藏文件夹.git,这个目录是Git用来跟踪管理版本库的

将文件添加到仓库

git add .

git add .是添加所有文件,可以指定单个文件

在这里插入图片描述

把文件提交到仓库。

git commit -m "提交注释"

在这里插入图片描述

至此,本地仓库就建好了。

关联远程 github 仓库

git remote add origin git@github.com:yangxch/im-api.git

上传本地代码,推送到远程仓库

git push -u origin master

git push -u origin main

注:目前GitHub默认分支已经是main,如果本地创建的是master,使用git push -u origin master提交后有两个分支。解决方法:把master合并到main,本地改名为main,然后删除master分支。


master分支到main分支迁移

如果GitHub默认是main分支,本地是master,可以使用一下方法做迁移。

  1. 给本地分支master重命名为main
git branch -M main 

说明:“-M”对分支重命名

  1. 查看所有分支
$ git branch -a
* master
  remotes/origin/main
  remotes/origin/master  
  1. 删除远程分支master
$ git push origin --delete master
To github.com:xxxxxx/im-api.git
 - [deleted]         master
  1. 确认删除情况
$ git branch -a
* main
  remotes/origin/main
  1. 切换到当前分支main,也就要保留下来的分支
$ git checkout main 
Already on 'main'  

说明:“Already on ‘main’”已经说明在当前分支

  1. 合并分支
$ git merge remotes/origin/main
fatal: refusing to merge unrelated histories 

说明:拒绝合并,需要忽略这个限制,添加“–allow-unrelated-histories”

$ git merge remotes/origin/main --allow-unrelated-histories
Merge made by the 'ort' strategy.
 LICENSE   | 201 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 README.md |   2 +
 2 files changed, 203 insertions(+)
 create mode 100644 LICENSE
 create mode 100644 README.md
  1. 提交修改
$ git push origin main
Enumerating objects: 155, done.
Counting objects: 100% (155/155), done.
Delta compression using up to 8 threads
Compressing objects: 100% (142/142), done.
Writing objects: 100% (154/154), 118.29 KiB | 545.00 KiB/s, done.
Total 154 (delta 36), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (36/36), done.
To github.com:yangxch/im-api.git
   a9374c1..ef6086d  main -> main 

五、Git常用命令

在这里插入图片描述

Git 所有的操作命令开头都要以 git 开头,上面列举了最常用的一些 Git 命令。


git init

初始化git仓库,成功后你会发现项目里多了一个隐藏文件夹.git,这个目录是Git用来跟踪管理版本库的


git status

查看git仓库的状态,输入 git status 命令,如下:

在这里插入图片描述

这里表示默认在main分支,并且提示有个文件有修改,可以使用git add等命令来操作。


git add

将文件添加到仓库
在这里插入图片描述


git commit

把文件提交到仓库。

在这里插入图片描述


git push

把本地代码推到远程分支。

#把本地代码推到远程main分支
git push origin main

git pull

把远程最新的代码更新到本地。一般我们在 push 之前都会先 pull ,这样不容易冲突。

#从main分支最新的代码更新到本地
git pull origin main

git log

查看所有产生的 commit 记录 。

在这里插入图片描述


git branch

branch 就是分支,git branch 查看下当前分支情况

在这里插入图片描述


git checkout

切换分支。但是 checkout 不只用作切换分支,他可以用来切换tag,比如切换到某次commit。

 #切换到a分支
 git checkout a

git merge

合并分支。

#将a分支代码合并过来
git merge a

git branch -d

删除分支

#把a分支删除
git branch -d a 

git branch -D

有些时候可能会删除失败,比如如果a分支的代码还没有合并到master,你执行 git branch -d a 是删除不了的,它会智能的提示你a分支还有未合并的代码,但是如果你非要删除,那就强制删除。

#强制删除a分支
git branch -D a
  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员大佬超

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值