| 初始化与配置 |
|---|
| 一次性为所有仓库设置你的姓名、邮箱或编辑器。 | git config --global user.name "Ada" |
| 为常用命令定义一个快捷名称。 | git config --global alias.co checkout |
| 在当前文件夹创建一个新仓库。 | git init |
| 把远程仓库复制到你的机器上。 | git clone git@github.com:org/repo.git |
| 只复制单个分支的最新若干提交。 | git clone --depth 1 --single-branch git@github.com:org/repo.git |
| 快照基础 |
|---|
| 显示哪些已暂存、已修改、未跟踪。 | git status -sb |
| 暂存更改,使其进入下一次提交。 | git add src/app.ts |
| 逐块审查更改,只暂存你接受的部分。 | git add -p src/app.ts |
| 暂存所有已跟踪文件的更改,不添加新文件。 | git add -u |
| 把已暂存的更改记录为一个新提交。 | git commit -m "fix: null check" |
| 用修正后的提交替换最后一次提交。 | git commit --amend -m "fix: handle empty input" |
| 显示未暂存的更改,加 --staged 显示已暂存的更改。 | git diff --staged |
| 显示自上次提交以来的全部更改,无论是否已暂存。 | git diff HEAD |
| 分支与合并 |
|---|
| 列出、创建或删除分支。 | git branch feature-x |
| 删除已合并分支(-D 强制删除,-a 列出所有分支)。 | git branch -d feature-x |
| 切换分支(checkout 的现代替代)。 | git switch feature-x |
| 一步创建新分支并切换过去。 | git switch -c feature-x |
| 切换分支或恢复文件(较老、范围更广的命令)。 | git checkout feature-x |
| 把另一分支的更改并入当前分支。 | git merge feature-x |
| 取消产生冲突的合并,把分支恢复到之前的状态。 | git merge --abort |
| 把当前分支的提交重放到另一分支之上。 | git rebase main |
| 在重放时压缩、重排或编辑提交。 | git rebase -i main |
| 把另一分支的单个提交复制到当前分支。 | git cherry-pick a1b2c3d |
| 给提交打上一个可读标签,比如版本号。 | git tag -a v1.2.0 |
| 同时在单独文件夹中检出另一分支。 | git worktree add ../repo-feature feature-x |
| 查看历史 |
|---|
| 遍历提交历史。 | git log --oneline --graph --decorate |
| 遍历所有分支的历史,而不只是当前分支。 | git log --oneline --graph --all |
| 显示某个提交的完整 diff 和提交信息。 | git show HEAD |
| 显示文件每一行最后由谁修改。 | git blame src/app.ts |
| 显示 HEAD 指向过的所有提交,包括已丢弃的。 | git reflog |
| 对历史二分查找,定位引入问题的提交。 | git bisect start |
| 按作者汇总提交。 | git shortlog -sn |
| 从最近的标签计数,为当前提交命名。 | git describe --tags |
| 远程协作 |
|---|
| 列出或添加远程仓库。 | git remote add origin <url> |
| 列出远程及其 fetch 和 push URL。 | git remote -v |
| 下载远程更改,不改动你的分支。 | git fetch origin |
| 下载远程更改并清除已删除远程分支的引用。 | git fetch --prune |
| 拉取并合并当前分支的远程更改。 | git pull --rebase |
| 把本地提交推送到远程。 | git push -u origin feature-x |
| 覆盖远程分支,但仅当没有别人先推送时。 | git push --force-with-lease origin feature-x |
| 撤销更改 |
|---|
| 丢弃工作区更改,或取消暂存。 | git restore src/app.ts |
| 取消文件的暂存,编辑保留在工作区。 | git restore --staged src/app.ts |
| 移动当前分支指针,可选地同时移动索引。 | git reset --hard HEAD~1 |
| 新增一个撤销早前提交的提交(可安全共享)。 | git revert HEAD |
| 删除未跟踪的文件和文件夹。 | git clean -fd |
| 贮藏(stash) |
|---|
| 保存未提交的工作并重置工作区。 | git stash -u |
| 显示你保存的所有贮藏。 | git stash list |
| 重新应用贮藏并保留它。 | git stash apply stash@{1} |
| 删除不再需要的贮藏。 | git stash drop stash@{1} |
| 重新应用最近的贮藏并删除它。 | git stash pop |
| 文件与子模块 |
|---|
| 移动或重命名文件并暂存该更改。 | git mv old.ts src/new.ts |
| 删除文件并暂存删除操作。 | git rm src/old.ts |
| 把另一个仓库作为文件夹纳入本仓库跟踪。 | git submodule add git@github.com:org/lib.git lib |
| 从大仓库中只检出你指定的文件夹。 | git sparse-checkout set src docs |
| 把某次提交的树导出为 tar 或 zip 文件。 | git archive -o repo.zip HEAD |