Skip to content

Git 与 Github 操作

HTTPS和SSH协议的简单解释

  • 定义来说:HTTPS和SSH是建立“上传代码的机器”和“Github账户”之间联系的两个协议。
  • 过程来说:都是 机器 → github账户 → github仓库
  • 方法来说:配置HTTPS时会让你手动输入一次密码;使用SSH时会让你一次性生成密钥,放入你的github profile。
  • 效果来说:HTTPS常常需要挂代理,SSH没有这个问题。

一台机器可以有多个SSH密钥以连接到不同域名。一个Github账号可以存储多个SSH公钥以连接到不同的机器。但是,一台机器连接到一个域名,只能通过切换ssh配置文件来改变使用的密钥。

关于SSH举例:

服务器默认连接到github的密钥是lzh的id_rsa.pub文件,那么:

每个人将服务器的文件备份到SR这个项目(在lzh的github下)中,均使用的是lzh的id_rsa.pub文件。

每个人将服务器的文件备份到VAE256这个private项目(在ly的github下)中,只有使用ylin_rsa.pub文件,才能有权限。

ly将自己电脑上的文件备份到VAE256这个项目(在ly的github下),使用的是自己电脑上的另一个公钥,比如也叫ylin_rsa.pub文件(公钥的内容一定是不一样的)。

默认传输(HTTPS)

1 本地上传缓存

git init
git add . #上传所有文件,这样注释也是对所有进行注释
git commit -m "注释"

2 与远程仓库关联

git remote add connect_name <GitHub 仓库地址>
# 请注意这个connect_name,这是远程仓库地址的代号。

查看已经有的connect name:

git remote -v

3 建立本地的分支

git branch <branch_name> #创建一个本地分支
git checkout -b <branch_name> <connect_name>/<remote_branch_name> #创建一个与远程关联的本地分支
git checkout <branch_name> #切换到 branch_name
git branch #查看所有本地分支
git branch -r #查看当前远程分支

4 上传

git push <connect_name> <your_branch_name>:<remote_branch_name> 
# 将`your_branch_name`分支上传到远程仓库`connect_name`的`<remote_branch_name>`分支
git push -u <remote_name> <your_branch_name>:<remote_branch_name>
# 同上,但建立关联

注:分支操作比较复杂,一般不会用到

SSH 传输

1 在本地生成一个SSH

ssh-keygen -t rsa -C '[邮箱]' -f ~/.ssh/[你的名字]_rsa
# 连带方括号进行个人的修改

这里的邮箱没有任何用,只是用来分辨ssh公钥是谁的。

2 查看公钥

cat ~/.ssh/id_rsa.pub

3 复制到Github仓库中的相应位置

alt text

图1.3.1 SSH复制的位置
4 检查SSH连接成功

ssh -T git@github.com

输出以下则连接成功:

Hi boobyuuuu! You've successfully authenticated, but GitHub does not provide shell access.

5 将 connect_name改为SSH连接

git remote set-url connect_name git@github.com:boobyuuuu/SR.git

6 正常上传

修改上次的注释

git commit --amend #会打开一个vim文件

附带vim操作介绍:

#INSERT模式:
i
#退出:
Esc : q #直接退出
Esc : wq #保存后退出

回溯至之前某一次上传的状态

查看之前push记录

git reflog

可以得到一系列的ID

回溯到某一个ID

git reset --hard <commit_id>
# 不可撤销操作!这将重置你工作区的所有修改!

.gitignore文件出现问题

刷新git的缓存区

git rm -r --cached .
git add .