From 2cd40ae26bce1bb7e747910a6a0b90101e695bb6 Mon Sep 17 00:00:00 2001 From: camera-2018 <2907618001@qq.com> Date: Sun, 27 Aug 2023 14:29:29 +0800 Subject: [PATCH] docs: 3.5 --- 3.编程思维体系构建/3.5git与github.md | 70 +++++++++++++++---- 1 file changed, 56 insertions(+), 14 deletions(-) diff --git a/3.编程思维体系构建/3.5git与github.md b/3.编程思维体系构建/3.5git与github.md index a94136a..f873cca 100644 --- a/3.编程思维体系构建/3.5git与github.md +++ b/3.编程思维体系构建/3.5git与github.md @@ -2,15 +2,15 @@ 引自 nju-ics-pa -## **光玉** +## 光玉 想象一下你正在玩 Flappy Bird,你今晚的目标是拿到 100 分,不然就不睡觉。经过千辛万苦,你拿到了 99 分,就要看到成功的曙光的时候,你竟然失手了!你悲痛欲绝,滴血的心在呼喊着,“为什么上天要这样折磨我?为什么不让我存档?” -[**Play Happy Bird**](https://flappybird.io/) +[Play Happy Bird](https://flappybird.io/) 想象一下你正在写代码,你今晚的目标是实现某一个新功能,不然就不睡觉。经过千辛万苦,你终于把代码写好了,保存并编译运行,你看到调试信息一行一行地在终端上输出。就要看到成功的曙光的时候,竟然发生了错误!你仔细思考,发现你之前的构思有着致命的错误,但之前正确运行的代码已经永远离你而去了。你悲痛欲绝,滴血的心在呼喊着,“为什么上天要这样折磨我?”你绝望地倒在屏幕前 ... ... 这时,你发现身边渐渐出现无数的光玉,把你包围起来,耀眼的光芒令你无法睁开眼睛 ... ... 等到你回过神来,你发现屏幕上正是那份之前正确运行的代码!但在你的记忆中,你确实经历过那悲痛欲绝的时刻 ... ... 这一切真是不可思议啊 ... ... -## **人生如戏****,****戏如人生** +## 人生如戏,戏如人生 人生就像不能重玩的 Flappy Bird,但软件工程领域却并非如此,而那不可思议的光玉就是“版本控制系统”。版本控制系统给你的开发流程提供了比朋也收集的更强大的光玉,能够让你在过去和未来中随意穿梭,避免上文中的悲剧降临你的身上。 @@ -18,7 +18,7 @@ 在本节,我们使用 `git` 进行版本控制。下面简单介绍如何使用 `git` : -### **游戏设置** +### 游戏设置 首先你得安装 `git` : @@ -52,7 +52,7 @@ git init 进行初始化。初始化后会创建一个隐藏的文件夹名为 `.git` git 会基于这个文件夹来进行版本控制功能。 -### **查看****commit****信息** +### 查看 commit 信息 使用 @@ -147,7 +147,7 @@ subject为commit概述 你可以使用 `git log` 查看存档记录,你应该能看到刚才编辑的注释。 -### **读档****(回溯到某一个 commit)** +### 读档(回溯到某一个 commit) 如果你遇到了上文提到的让你悲痛欲绝的情况,现在你可以使用光玉来救你一命了。首先使用 `git log` 来查看已有的存档,并决定你需要回到哪个过去。每一份存档都有一个 `hash code`,例如 `b87c512d10348fd8f1e32ddea8ec95f87215aaa5` , 你需要通过 `hash code` 来告诉 `git` 你希望读哪一个档。使用以下命令进行读档: @@ -194,7 +194,7 @@ git checkout -B 分支名 不同的分支之间不会相互干扰,这也给项目的分布式开发带来了便利。有了分支功能,你就可以像第三视点那样在一个世界的不同时间 ( 一个分支的多个存档 ),或者是多个平行世界(多个分支)之间来回穿梭了。 -### **更多功能** +### 更多功能 以上介绍的是 `git` 的一些基本功能,`git` 还提供很多强大的功能,例如使用 `git diff` 比较同一个文件在不同版本中的区别,使用 `git bisect` 进行二分搜索来寻找一个 bug 在哪次提交中被引入... @@ -246,13 +246,57 @@ git checkout -B 分支名 最后你访问[GitHub 官网](https://github.com)应该会显示你的 dashboard 管理台界面 -#### 第二步:创建 SSH Key 并获取公钥 +#### 第二步:选择你拉取仓库的方式 -先在 C:\Users\用户名\.ssh 下找有没有 `id_rsa` 和 `id_rsa.pub` 文件 +点开 github 某个仓库的绿油油的 `<>Code` 按钮,你会发现有三种 clone 方式。 + +分别为 + +- https (基本无配置,有图形化界面就能用) +- ssh (有公私钥设置,没有图形化界面也能用) +- gh-cli (github 出品的cli工具) + +![](https://cdn.xyxsw.site/Snipaste_2023-08-27_14-06-28.png) + + +#### 【https方法配置】账号绑定github + +在命令行配置好你的id和邮箱 + +```bash +git config --global user.name "Zhang San" # your name +git config --global user.email "zhangsan@foo.com" # your email +``` + +在 GitHub 主页,找到 `New` 或者 `Create repository` 一个绿色的按钮,创建一个新的仓库 + +![](https://cdn.xyxsw.site/boxcn5sVnE76FYpVW2RDxtWDiZc.png) + +然后填上这个仓库的大名就可以创建了 + +![](https://cdn.xyxsw.site/boxcnsN133WrLrbxsX8JgvsQmif.png) + +进入你新创建的仓库 + +跟随新创建之后的指引,`…or create a new repository on the command line` 内他描述了如何创建一个文件夹、创建一个 README.md 的文件,然后和 github 仓库绑定。 + +push 的时候 github 会弹窗索要你的 github 账号和密码,填上去就能用了。 + + + +#### 【ssh方法配置】创建 SSH Key 并获取公钥 + +先在 `C:\Users\用户名\.ssh` 下找有没有 `id_rsa` 和 `id_rsa.pub` 文件 + +:::tip +这里 `.ssh` 文件夹是一个隐藏文件夹 + +如何显示隐藏文件夹请搜索互联网或看这篇文章 [support microsoft 显示隐藏的文件](https://support.microsoft.com/zh-cn/windows/%E6%98%BE%E7%A4%BA%E9%9A%90%E8%97%8F%E7%9A%84%E6%96%87%E4%BB%B6-0320fe58-0117-fd59-6851-9b7f9840fdb2) +::: 如果有就直接跳过这一步 -如果没有,打开 Shell(Windows 下打开 Git Bash *前提是你已经安装好了 git 在桌面右键应该会有 Git bash here 选项 *),创建 SSH Key: +如果没有,打开 Shell(Windows 下打开 Git Bash *前提是你已经安装好了 git 在桌面右键应该会有 Git bash here 选项*),创建 SSH Key: ```bash ssh-keygen -t rsa -C "youremail@example.com" # youremail为你注册用的电子邮件地址 @@ -260,7 +304,7 @@ ssh-keygen -t rsa -C "youremail@example.com" # youremail为你注册用的电 打开 `id_rsa.pub`,复制里面的内容 -#### 第三步:绑定 Github +#### 【ssh方法配置】绑定 Github 登陆 `GitHub`,点击右上角自己的头像,打开 `settings` @@ -272,7 +316,7 @@ ssh-keygen -t rsa -C "youremail@example.com" # youremail为你注册用的电 然后,点 `New SSH Key`,填上任意 Title,在 Key 文本框里粘贴 `id_rsa.pub` 文件的内容即可 -#### 第四步:创建仓库并和本地绑定 +#### 【ssh方法配置】创建仓库并和本地绑定 绑定完 GitHub 然后你可以创建仓库了 @@ -301,8 +345,6 @@ git remote add origin git@github.com:yourname/gitexample.git git clone git@github.com:yourname/gitexample.git ``` -> 以上方法是基于 ssh 方式的,下面方法是基于 HTTPS 方式的 - 或者你可以跟随新创建之后的指引,`…or create a new repository on the command line` 内他描述了如何创建一个文件夹、创建一个 README.md 的文件,然后和 github 仓库绑定。 ![](https://cdn.xyxsw.site/Snipaste_2023-07-16_17-19-18.png)