写在前面
最近发现自己有些健忘,一些没有系统学习的知识很容易忘记,例如git的一些命令还有github操作。这些原来都是看网上博客学习的,比较零散也没有记录,当时就是即学即用,用完也就忘了。再简单的东西不总结也难以抵挡长时间不用的冲击。所以写一点总结,方便以后长时间不用时还能快速上手。
本文只为了初学者关联本地仓库与远程仓库而服务,不涉及git的具体使用。全文内容大致分成以下几个方面
- 从GitHub 创建仓库,再clone到本地进行关联
- git基本配置,ssh key生成与配置
- 从GitHub 创建空仓库,将本地仓库与其关联
- 关联之后如何提交到GitHub
正常可以通过1、3两步或者2、3两步来进行本地与远程的关联。
大致写完之后发现有些乱,没啥体系。本来想着就私有吧,但是私有已经够多了,为简书加点创作量吧。
1. 从GitHub创建repo并clone到本地
GitHub创建repo很简单就不说了,按步骤来就行。
接下来是在本地clone远程仓库,执行命令({xxx}表示需要换成自己的)
git clone git@github.com:{user_name}:{repo_name}.git
git clone https://github.com/{user_name}/{repo_name}.git
两种clone方式,ssh和https都可以,在这之前要进行一些配置。下面具体介绍如何clone
1.1 git初始化配置:user name和email
这是在下载git后的第一步配置,设置成远程(GitHub)的用户名和邮箱
git config --global user.name "{user_name}"
git config --global user.email "{user_email}"
查看配置信息
git config --list
1.2 生成 SSH Key 并添加到GitHub
ssh key生成在~/.ssh目录下。执行
cd ~/.ssh
ls
查看是否存在 id_rsa 以及 id_rsa.pub文件(rsa是密钥的意思),若不存在则需要生成ssh key。执行
ssh-keygen -t rsa -C "user_email"
之后会有一些操作,一路回车即可,生成上述两个文件,其中id_rsa.pub的内容是我们需要的ssh key,需要在GitHub中添加该ssh key。
在GitHub中添加也很简单,settings -> SSH and GPG keys 去添加即可。添加之后表示在本机上可以通过ssh连接到GitHub的远程仓库。
验证是否成功添加SSH Key,可以执行
ssh -T git@github.com
// 返回: Hi {user_name}! You've successfully authenticated, but GitHub does not provide shell access.
// 表示成功添加
1.3 clone public/private repo
此时已经可以直接 clone public repo 了,使用 https 和 ssh 都可以。
1.4 一些已知问题
1.4.1 配置好 ssh key 之后连接不到 GitHub
问题形式
$ ssh -T git@github.com
ssh: connect to host github.com port 22: Connection timed out
此为网络问题,时而好时而不好。
还有可能是开启了代理的缘故。可以尝试更换 443 端口,详见Using SSH over the HTTPS port - GitHub Docs
1.4.2 clone 的时候报错
报错内容
ssh: connect to host github.com port 22: Connection timed out
fatal: Could not read from remote repository.
该问题与上面一致,网络问题,参上。
2. 从本地创建repo并提交到Github
这种方法和第一种方法殊途同归。只是一个从本地关联到远程,一个从远程关联到本地。从GitHub上clone会自带GitHub的远程库信息,而从本地新建关联到远程需要remote add源。
以下部分摘自提交本地代码到github - 只会玩辅助 - 博客园 (cnblogs.com)
- 需要先把本地代码文件夹初始化成git仓库
- 本地代码文件夹叫做工作区,需要先把工作区的代码存到暂存区,通过git add .
- 然后将暂存区的代码提交到本地的版本库 通过git commit -m '提交信息'
- 最后将本地版本库提交到github仓库
1)本地代码文件夹初始化成git仓库
git init
执行后会生成.git目录
2)本地代码文件夹叫做工作区,需要先把工作区的代码存到暂存区,通过git add .
在对本地项目进行编辑后,需要将工作区的文件添加到暂存区,让git进行记录,这里涉及到git的运行机制
git add . // 点表示当前目录下所有文件
3)然后将暂存区的代码提交到本地的版本库 通过git commit -m '提交信息'
提交的是当前版本,提交之后可以通过git log查看本次提交版本
git commit -m "commit message"
4)最后将本地版本库提交到github仓库
这里首先需要在GitHub上创建一个空项目,注意 GitHub 在 initialize 的提示 Skip this step if you’re importing an existing repository.
然后执行下述命令去关联远程库,可以在.git/config中查看相关信息
git remote add origin git@github.com:{user_name}/{repo_name}.git // origin 是远程库的名字,可以自定义
再把本地版本库提交到远程
git push -u origin master // origin是远程库的名字,可以自定义;master是分支名,是默认的主分支
3. 已经关联远程仓库
3.1 将本地修改提交到GitHub远程仓库
此时编辑文件,或者新建文件之后,可以执行 git status
查看某些文件会出现红色信息表示尚未add到暂存区,相当于从 2 中的 2)开始,不过省去了4)git remote add 关联远程仓库的步骤。
简而言之就是执行下述命令
git add .
git commit -m "new commit"
git push origin main
3.2 拉取远程仓库内容到本地
git pull origin main
至此已经结束了,可以完成本地和远程单个库的交互。没有说明每个命令背后的逻辑,所以遇到与文中不一样的信息时可能会难以进行下去。
最后附一些其他感觉不错的相关博文以供参考
- Git教程 - 廖雪峰的官方网站 (liaoxuefeng.com)(对git操作讲述的比较成体系)
- 本地Git仓库和远程仓库的创建及关联 - 简书 (jianshu.com)(图比较多)