Git&GitHub
基本概念¶
分布式/集中式版本管理¶
版本管理:顾名思义,用于个人/团队级别代码管理,主要是记录更改
关键概念:仓库(Repository)、提交(Commit)、分支(Branch)、合并(Merge)、冲突(Conflict)、标签(Tag)
github:理解成云端(== 百度云),通过git上传,上传内容主要是代码
版本退回¶
原理:指针操作
工作区/暂存区¶
工作(目录)有一个隐藏目录.git,这个不算工作区,而是Git的版本库。
- 其中包含暂存区、分支(默认有一个main)
把文件往Git版本库里添加
-
第一步是用
git add把文件添加进去,是把文件修改添加到暂存区; -
第二步是用
git commit提交更改,是把暂存区的所有内容提交到当前分支。
两种情况:
-
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
-
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
就是让这个文件回到最近一次git commit或git add时的状态。
删除文件¶
远程仓库¶
使用https除了速度慢以外,还有个最大的麻烦是每次推送都必须输入口令,但是在某些只开放http端口的公司内部就无法使用ssh协议而只能用https。
分支管理¶
多人协作¶
- 首先,可以尝试用
git push origin <branch-name>推送自己的修改; - 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
- 如果合并有冲突,则解决冲突,并在本地提交;
- 没有冲突或者解决掉冲突后,再用
git push origin <branch-name>推送就能成功!
当然!这里帮你整理了一份 GitHub CLI (gh) 常用命令速查表,方便你快速使用和参考:
GitHub CLI (gh) 常用命令速查表¶
1. 认证和账户¶
| 命令 | 说明 | 示例 |
|---|---|---|
gh auth login | 登录 GitHub | gh auth login |
gh auth logout | 登出 GitHub | gh auth logout |
gh auth status | 查看当前认证状态 | gh auth status |
gh api | 直接调用 GitHub API | gh api repos/octocat/hello-world |
2. 仓库管理¶
| 命令 | 说明 | 示例 |
|---|---|---|
gh repo clone <repo> | 克隆仓库 | gh repo clone octocat/hello-world |
gh repo create | 创建新仓库(交互式) | gh repo create |
gh repo view | 查看仓库详情 | gh repo view |
gh repo fork | Fork 一个仓库 | gh repo fork owner/repo |
3. Pull Request(PR)管理¶
| 命令 | 说明 | 示例 |
|---|---|---|
gh pr create | 创建 PR | gh pr create |
gh pr status | 查看 PR 状态 | gh pr status |
gh pr list | 列出 PR | gh pr list |
gh pr view <number> | 查看指定 PR 详情 | gh pr view 123 |
gh pr checkout <number> | 切换到 PR 分支 | gh pr checkout 123 |
gh pr merge <number> | 合并 PR | gh pr merge 123 |
gh pr close <number> | 关闭 PR | gh pr close 123 |
4. Issue 管理¶
| 命令 | 说明 | 示例 |
|---|---|---|
gh issue create | 创建 Issue | gh issue create |
gh issue list | 列出 Issue | gh issue list |
gh issue view <number> | 查看指定 Issue 详情 | gh issue view 456 |
gh issue close <number> | 关闭 Issue | gh issue close 456 |
5. GitHub Actions 工作流¶
| 命令 | 说明 | 示例 |
|---|---|---|
gh run list | 查看工作流运行历史 | gh run list |
gh run view <run_id> | 查看指定运行日志 | gh run view 12345678 |
gh workflow list | 查看工作流定义 | gh workflow list |
gh workflow run <id> | 触发指定工作流 | gh workflow run build.yml |
6. 其他实用命令¶
| 命令 | 说明 | 示例 |
|---|---|---|
gh gist create <file> | 创建 Gist | gh gist create snippet.js |
gh alias set | 设置命令别名 | gh alias set co pr checkout |
gh help | 查看帮助 | gh help |
小提示¶
- 交互模式:很多命令(如
gh pr create)会自动进入交互式填写模式,非常方便。 - 支持自动补全:在终端中输入
gh后按 Tab 键,自动补全命令和参数。 gh --version:查看当前 CLI 版本。
如果你需要,我还能帮你写一个用 gh 快速创建 PR 或 Issue 的示范脚本!你想要吗?
杂项¶
文件大小限制¶
提交哈希值¶
在 Git 中,版本 ID(即提交哈希值)由 SHA-1 算法生成,表现为一个 40 位的十六进制字符串(例如 a1b2c3d4e5f6...)。
SHA-1算法流程¶
-
预处理
- 将输入数据填充至长度满足512位倍数 - 64位。
- 附加原始数据长度的二进制表示(64位)。 -
分块处理
- 将填充后的数据分割为512位的块(Block)。 -
初始化哈希值
- 设置5个32位的初始变量(H0-H4):
-
循环压缩函数
- 对每个512位块进行80轮运算,更新中间哈希值。
- 每轮使用非线性函数(如AND、OR、XOR)和常量值。 -
最终哈希
- 合并所有块的中间结果,生成最终的160位哈希值。
示例
```bash # Linux/macOS
约 1324 个字 35 行代码 6 张图片 预计阅读时间 5 分钟
echo "hello" | openssl sha1 # 输出:aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d
# Windows PowerShell Get-FileHash -Algorithm SHA1 file.txt ```
SHA-256 算法原理与 SHA-1 的区别是位数多了
SHA-256 应用¶
- 数据完整性验证
- 文件下载后校验哈希值,确保未被篡改。
-
数字签名
- 用私钥对数据的SHA-256哈希值签名,公钥验证签名合法性。 -
区块链
- 比特币使用SHA-256计算区块哈希和交易验证。 -
密码学协议
- TLS 1.2/1.3、SSH、IPSec等协议依赖SHA-256保证通信安全。
使用SHA-256¶
1. 命令行工具¶
- Linux/macOS:
- Windows PowerShell:
2. 编程示例(Python)¶
import hashlib
# 计算字符串的SHA-256哈希
text = "hello"
hash_object = hashlib.sha256(text.encode())
hex_dig = hash_object.hexdigest()
print(hex_dig) # 输出:2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
# 计算文件的SHA-256哈希
def hash_file(filepath):
sha256 = hashlib.sha256()
with open(filepath, "rb") as f:
while chunk := f.read(4096):
sha256.update(chunk)
return sha256.hexdigest()
print(hash_file("data.txt"))
3. 在线工具¶
- SHA-256 Online Generator
- CyberChef(多功能加密工具)





