Git 分支与工作区
查看与管理分支
git branch · 管理分支
- 列出所有分支(包括本地的和远程的;当前分支以
*突出表示):
bash
git branch {{[-a|--all]}}- 列出哪些分支在其历史中包含指定的提交记录:
bash
git branch {{[-a|--all]}} --contains {{提交的哈希值}}- 显示当前分支的名称:
bash
git branch --show-current- 基于当前提交创建新分支:
bash
git branch {{分支名}}- 基于指定提交创建新分支:
bash
git branch {{分支名}} {{提交的哈希值}}- 重命名指定分支(也可重命名当前分支):
bash
git branch {{[-m|--move]}} {{旧分支名}} {{新分支名}}- 删除本地分支(需先切换到其他分支):
bash
git branch {{[-d|--delete]}} {{分支名}}- 删除远程分支:
bash
git push {{远程仓库名}} {{[-d|--delete]}} {{远程分支名}}创建、切换与重命名分支
git checkout · 切换分支或将文件检出到工作区
- 创建并切换到新分支:
bash
git checkout -b {{分支名}}- 基于指定引用(如分支、远程分支、标签等)创建并切换到新分支:
bash
git checkout -b {{分支名}} {{引用}}- 切换到已有的本地分支:
bash
git checkout {{分支名}}- 切换到上次检出的分支:
bash
git checkout -- 切换到已有的远程分支:
bash
git checkout {{[-t|--track]}} {{远程名}}/{{分支名}}- 丢弃当前目录下所有未暂存的更改(更多撤销操作见
git reset):
bash
git checkout .- 丢弃对指定文件的未暂存更改:
bash
git checkout {{路径/到/文件}}- 用指定分支中提交的版本覆盖当前工作区的文件:
bash
git checkout {{分支名}} -- {{路径/到/文件}}git create-branch · 在 Git 仓库中创建分支
属于
git-extras一部分。 更多信息:https://manned.org/git-create-branch。
- 创建本地分支:
bash
git create-branch {{分支名}}- 创建本地分支并推送到 origin 远程:
bash
git create-branch {{[-r|--remote]}} {{分支名}}- 创建本地分支并推送到 upstream 远程(常用于 fork 的工作流):
bash
git create-branch {{[-r|--remote]}} upstream {{分支名}}git rename-branch · 重新命名一个 Git 分支
属于
git-extras的一部分。 更多信息:https://github.com/tj/git-extras/blob/main/Commands.md#git-rename-branch。
- 重新命名你目前所在的分支:
bash
git rename-branch {{新的分支名称}}- 重新命名一个特定的分支:
bash
git rename-branch {{旧的分支名称}} {{新的分支名称}}git switch · 切换 Git 分支。要求 Git 版本在 2.23 以上
另请参阅:
git checkout。 更多信息:https://git-scm.com/docs/git-switch。
- 切换到一个已有的分支:
bash
git switch {{分支名字}}- 创建并切换到一个新分支:
bash
git switch {{[-c|--create]}} {{分支名字}}- 创建并切换到基于某个提交的新分支:
bash
git switch {{[-c|--create]}} {{分支名字}} {{指定提交}}- 切换到之前的分支:
bash
git switch -- 切换到一个分支,并更新所有匹配的子模块:
bash
git switch --recurse-submodules {{分支名字}}- 切换到一个分支,并和当前分支以及暂未提交的修改进行三方合并:
bash
git switch {{[-m|--merge]}} {{分支名字}}稀疏检出与暂存区导出
git checkout-index · 将文件从暂存区复制到工作区
- 从暂存区恢复工作区中缺失的文件(不覆盖已有文件):
bash
git checkout-index {{[-a|--all]}}- 用暂存区版本恢复工作区文件(强制覆盖):
bash
git checkout-index {{[-a|--all]}} {{[-f|--force]}}- 用暂存区版本覆盖工作区已有文件(不创建缺失文件):
bash
git checkout-index {{[-a|--all]}} {{[-f|--force]}} {{[-n|--no-create]}}- 将暂存区中的文件导出到指定目录(注意结尾斜杠):
bash
git checkout-index {{[-a|--all]}} {{[-f|--force]}} --prefix {{路径/到/导出目录}}/git sparse-checkout · 仅检出仓库的部分文件,而不是克隆或检出全部文件(稀疏检出)
- 启用稀疏检出:
bash
git sparse-checkout init- 禁用稀疏检出并恢复完整仓库:
bash
git sparse-checkout disable- 指定要包含的目录(或文件):
bash
git sparse-checkout set {{路径/到/目录}}- 稍后添加更多:
bash
git sparse-checkout add {{路径/到/目录}}示例整理自 tldr-pages,作者为 tldr-pages team and contributors,遵循 CC BY 4.0。
继续阅读
- Git完整实践与解答
- Git任务与配置
- Git任务与配置