文章目录
- 一、GitHub创建仓库
- 二、安装Git客户端
- 1、安装
- 2、配置身份
- 三、为Github账户设置SSH key
- 1、生成ssh key
- 2、GitHub 新建SSh key
- 3、测试连接是否成功
- 四、上传本地项目到Github
- 方法一:
- 方法二:
- master分支到main分支迁移
- 五、Git常用命令
- git init
- git status
- git add
- git commit
- git push
- git pull
- git log
- git branch
- git checkout
- git merge
- git branch -d
- git branch -D
首先说明一下,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,可以使用一下方法做迁移。
- 给本地分支master重命名为main
git branch -M main
说明:“-M”对分支重命名
- 查看所有分支
$ git branch -a
* master
remotes/origin/main
remotes/origin/master
- 删除远程分支master
$ git push origin --delete master
To github.com:xxxxxx/im-api.git
- [deleted] master
- 确认删除情况
$ git branch -a
* main
remotes/origin/main
- 切换到当前分支main,也就要保留下来的分支
$ git checkout main
Already on 'main'
说明:“Already on ‘main’”已经说明在当前分支
- 合并分支
$ 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
- 提交修改
$ 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