Git远程操作

有了本地操作,肯定还得保存到云端

配置连接

默认 本地操作 中的配置已经完成了

以下命令全部都在 bash 中执行

ssh 原理

ssh 是基于非对称加密的 RSA 算法,算法流程请点我

通过 ssh 加密,使得本地和远程可以安全地通信

生成 ssh 密钥

执行命令 ssh-keygen -t rsa -C ringoer@qq.com

此时会生成ssh密钥。命令中邮件地址替换为自己的

查看密钥

执行命令 cat ~/.ssh/id_rsa.pub

此时会在控制台显示一串密钥,复制下来

设置密钥

打开 github,打开 settings,选择 SSH and GPG keys,选择 New SSH key

title 随便写,key 的文本则填写刚才复制出来的密钥,然后 add key

一台电脑只需要一个密钥

测试配对

执行命令 ssh -T git@github.com

如遇询问 yes or no,请输入 yes 并继续

设置目标仓库

在 github 上新建一个 repository,然后复制其 ssh 地址

ssh 地址一般形如 `git@github.com:Ringoer/xxx.git`

注意不要复制到 HTTPS 地址

然后在本地执行命令 git remote add origin git@github.com:Ringoer/xxx.git

执行后会在本地仓库创建一个名为 origin 的仓库,指向目标远程仓库

理论上可以随意命名这个仓库,不叫 origin 也可以,但是业界潜规则就是第一个仓库要叫 origin。如果以后新建了其它仓库,可以自己尝试叫别的名字

如果忘记自己配置了哪些远程仓库,可以通过命令 git remote -v 来查看在当前本地仓库配置的所有远程仓库及其别名

创建完成后,就可以直接通过 origin 操作远程仓库了

然后就又是我们熟悉的 CRUD 了

但是在 Git 远程操作中,略有些变化,大致如下表

动作 描述 特点
push 推送本地仓库代码到远程仓库 会在远程仓库强制创建分支
pull 从远程仓库拉取指定分支的代码到本地 要求本地已有对应分支
clone 从远程仓库克隆指定分支的代码到本地 最好在空目录下克隆,否则会覆盖已有内容

push

通过命令 git push 可以上传本地仓库的代码到远程仓库

该命令有如下变体

命令 描述
git push -u origin master 推送本地仓库的 master 分支到远程仓库的 master 分支,并将该远程仓库设置为上传流(upstream)
git push 推送本地仓库所有修改到被设置为 upstream 的远程仓库
git push origin master 推送本地仓库的 master 分支到远程仓库的 master 分支
git push origin master:child 推送本地仓库的 master 分支到远程仓库的 child 分支,格式是 本地:远程

clone

通过命令 git clone 可以拉取远程仓库代码到本地仓库

该命令有如下变体

命令 描述
git clone [git] 拉取指定 git 地址对应的仓库的所有分支代码,到新目录中,新目录与远程 repository 的名字相同
git clone [git] . 拉取指定 git 地址对应的仓库的所有分支代码,到当前目录中
git clone [git] [folderName] 拉取指定 git 地址对应的仓库的所有分支代码,到指定名字目录中,若该目录不存在会被新建,否则已有内容会被覆盖

注意,执行 clone 之后不会自动进入新文件夹,需要手动进入

pull

通过命令 git pull 可以拉取远程仓库代码到本地仓库已有分支

该命令可能会产生冲突

该命令有如下变体

命令 描述
git pull 拉取 upstream 仓库的,与当前所在分支相同的分支的所有内容到本地
git pull origin master:child 拉取 origin 仓库的,master 分支的代码到本地 child 分支

在该命令中如果想回避冲突,可以使用 git stashgit stash pop 组合命令

stash

压栈

通过命令 git stash 可以将本地仓库已经标记但还未 commit 的文件隐藏进缓存栈中

此时执行 git pull 不会与缓存栈中文件作对比

可以多次执行命令 git stash 来不断压栈

弹出

当 pull 完成后可以通过命令 git stash pop 来弹出栈顶内容

可以根据需要来弹出,但因为栈的特性,必然是只能按顺序弹出

该操作可能会引起冲突

查看

可以通过命令 git stash list 来查看当前缓存栈中保存的内容

清空

可以通过命令 git stash clear 来清空缓存栈中所需内容

注意,该操作不可复原

其它

缩写

可以通过 code ~/.bashrc 命令,通过 vscode 打开 bash 配置文件

然后通过 alias 指令,指定缩写

alias ga="git add" 来令缩写命令 ga 等效于 git add 命令

不止 git 命令,其它 bash 命令也可以通过这种方法设置缩写

格式

可以通过 git rebase 命令来为 git log 指定排版

假设现在有三个版本,版本号如图

版本 版本号
1 bikh345
2 12jop3i
3(最新) u09dsf3

现在想合并已有版本1和2,使得日志缩短,可以通过命令 git rebase -i u09dsf3 来告诉 git,我想对 u09dsf3 之前的版本进行修改

此时 git 会弹出默认编辑器,向你请求修改,同时会给出帮助,按帮助修改即可

修改完毕后,保存,关闭这个文件,git 就会开始处理你的修改

在处理完成之前,如果你反悔了,可以通过命令 git rebase --abort 来取消这次 rebase

如果又反悔了(什么人啊这是),可以通过命令 git rebase --continue 来继续这次 rebase

rebase 也有可能出错,看看日志解决即可

大概就这些

感谢饥人谷对 其它 部分的帮助

--It's the end.Thanks for your read.--