跳转至

Git

Git 常用命令速查表 - riku.wowubuntu.com

Info

以下内容基于 2.X 版本.

Git 是一款版本控制系统 (Version control system, VCS). 名字的由来是项目创始人 Linus 的自嘲1, 该词在英语俚语代表 "令人讨厌的人".

暂存

Command New Files Modified Files Deleted Files Description
git add -A Stage all files.
git add . Stage all files in current folder.
git add --ignore-removal . × Stage new and modified files only.
git add -u × Stage modified and deleted files only.

提交信息

提交信息的编写方式可以参考 Conventional Commits, 里面列举了一些例子优点.
可以借助工具 commitlint 来进行检查.

类型 描述
refactor 代码重构,既不修复错误也不添加功能.
feat 类型为 feat 的提交表示在代码库中新增了一个功能(这和语义化版本中的 MINOR 相对应).
fix 类型为 fix 的 提交表示在代码库中修复了一个 bug(这和语义化版本中的 PATCH 相对应).
style 不影响代码含义的变化(空白/格式化/缺少分号等).
perf 改进性能的代码更改.
test 添加确实测试或更正现有的测试.
build 影响构建系统或外部依赖关系的更改.
docs 只是更改文档.
ci 更改持续集成文件和脚本.
chore 其他不修改 src 或 test 文件.
revert commit 回退.

忽略文件

不想使用 Git 进行跟踪和管理的文件可以在 .gitignore 文件中指定, 语法十分简洁易懂.
对于常见开发环境通常忽略的文件, 可以利用 gitignore.io (Web/CLI) 生成.

清空仓库

以下代码用于清空仓库指定分支的全部历史记录, 执行操作后提交历史将会永久丢失.

git checkout --orphan empty        || exit 1
git branch -D main                 || exit 1
git add -A                         || exit 1
git commit -m 'feat: first commit' || exit 1
git push origin empty:main --force || exit 1
git checkout main                  || exit 1
git branch -D empty
git pull origin main --allow-unrelated-histories

配置 Git

# 设置用戶
git config --global user.name '<NAME>'
git config --global user.email '<EMAIL>'

# 设置默认主分支名称
git config --global init.defaultBranch main

# 设置 pull 模式
git config --global pull.rebase true

# 设置编辑器
git config --global core.editor 'nvim'

# 设置网络代理
git config --global http.proxy 'http://127.0.0.1:1234'
git config --global https.proxy 'http://127.0.0.1:1234'

git config --global column.ui auto
git config --global branch.sort -committerdate

# 设置命令别名
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status

配置 GPG 签名

gpg --list-secret-keys --keyid-format=long
git config --global user.signingkey <KEY_ID>
git config --global user.signingkey <SUB_KEY_ID>!
git config --global commit.gpgsign true

详情请参考 GitHub Docs.

代码托管平台

以下平台提供了 Git 远程仓库托管服务:

使用平台进行对仓库托管还可以利用平台提供的相关功能, 但不应该产生依赖. 应确保项目随时可以脱离该平台并正常运作.

GitHub CLI

GitHub CLI 是 GitHub 官方提供的跨平台的命令行工具. 安装教程.
在 GitHub 因为安全问题禁用 Git 通过账户和密码登录后, 经过 GitHub CLI 配置后的 Git 可以按原样使用.

sudo pacman -S github-cli # Arch Linux
scoop install gh          # Windows

gh auth login             # 登录 GitHub 账号
gh auth setup-git         # 配置 Git

gh extension install github/gh-copilot # 安装 Copilot 拓展

gh copilot explain "sudo apt-get"         # 解释命令
gh copilot suggest "Undo the last commit" # 生成命令

常见错误

gpg: skipped "XXXXXXXXXXXXXXXX": No secret key

检查是否使用的正确的 gpg.exe. 通过下面命令指定使用的 gpg.exe:

git config --global gpg.program "path/to/gpg.exe"

参见

评论