- 工作树 -- 暂存区 -- 本地仓库 -- 远端仓库
.gitignore此文件中可放置不想追踪的文件.gitkeepgit跟踪文件,如果想要一个空文件夹被跟踪,就创建一个keep文件在下面
- 基础命令部分
- 全局
- 仓库
- 提交
- 分支
- 远程
- github
git config --global: 配置全局环境user.name: 用户名user.email: 用户邮箱core.editor "vim": 设置全局编辑器为vim
--bare <code.git>: 创建没有工作树的仓库
类型(模块):主题
| 类型 | 说明 |
|---|---|
| feat | 新功能 |
| fix | Debug |
| refactor | 重构 |
| docs | 改文档 |
| style | 改风格 |
| test | 加改测试 |
| chore | 杂项 |
| perf | 性能优化 |
| build | 改构建 |
| revert | 回滚 |
-n: 演习*: 所有 新建的,删除的,修改的.: 新建的,修改的-u: 更新已追踪-f: 允许添加忽略的文件-A, --all: 添加所有已跟踪和未跟踪
-a查看所有分支的提交记录--stat详细--pretty=[short/oneline]特殊显示--graph更直观--after="YYYY-MM-DD"指定日期--before="YYYY-MM-DD"指定日期--author="xxx"特定作者提交origin/master远端仓库日志文件/目录单独追踪
-avv查看全部分支信息-d/D删除分支-m/M修改主分支-u <remote>/<branch>设置追踪关系--merged列出所有已合并到当前分支的分支--no-merged未合并
-c创建并切换分支
--no-ff记录合并--squash分支合并为一个提交进行合并--abort出现冲突,终止合并-m <message>提交信息--edit合并提交前,允许编辑提交信息
git reset [<模式>] [<提交>]- 模式
模式 HEAD 暂存区 工作区 场景 --soft移动 保留 保留 合并多个提交 --mixed移动 重置 保留 撤销暂存(默认模式) --hard移动 重置 重置 彻底放弃更改(修复误操作)
<basebranch>#将当前分支更改应用到分支上-i#压缩历史 交互式变基--onto <newbase> <branch>#将分支变基到上--abort#当冲突时撤销合并--continue#继续合并
<stash> 可选参数,指定储藏
--all可以彻底清空所有文件,适用于切换分支时进行list查看存储状态pop将栈顶记录恢复并删除drop [<stash>]直接丢弃栈顶,clear清除所有记录show [<stash>]看与栈顶差异save xxx提交注释
add origin URL #添加远程仓库
rm origin URL #删除远程仓库
-v #显示详细信息
-u origin xxx推送同时,尝试将origin 的 xxx 设置为上游origin xxx --delete删除远端的xxx分支--tags推送全部标签-f强制提交
origin xxx覆盖当前工作树--rebase本地分支的提交应用到拉取的提交之上,保持历史线性--no-commit拉取并合并,但不自动提交--edit创建合并提交前,允许编辑提交信息
--all获取所有远端仓库更新--prune拉取更新时,清理已删除的分支
无查看所有标签[tag]设置标签-a设置标签名-m填写标签说明git tag v1.0.0轻量标签,适用于临时标记git tag -a v1.0.0 abc123d -m "tag"附注标签,正式发布git push origin --tags推送所有标签git push origin --follow-tags推送所有附注标签
允许在同一个仓库中同时签出多个分支,每个分支位于各自独立的工作目录(工作树)中
- 核心概念:
- 主工作树:最初的仓库目录
- 链接工作树:
worktree add创建的新工作目录,链接到主目录.git - 共享存储库:被所有存储库共享的主目录
.git
- 主要优势
- 并行工作流
- 避免切换成本
- 隔离环境
- 长期任务
- 命令详解
git worktree add ../hotfix-bug-123 hotfix/bug-123-b创建一个新分支并签出它,等同于在新目录git checkout -b--detach让新工作树处于"分离头指针"状态
git worktree list列出所有关联到当前仓库的工作树git worktree remove删除一个链接工作树及其目录git worktree prune清理失效记录
git restore <FILE>撤销单个文件工作区修改git restore .撤销所有工作区修改git restore --staged <FILE>取消暂存,移回工作区
git revert [<参数>] [<提交>]--continue继续中断的revert--abort终止revert
- 限定搜索范围
in:description:搜索仓库描述。- 使用
is:issue或is:pr搜索Issue或Pull Request。 - 星标筛选:使用
stars:>1000筛选星标数超过1000的项目。 - fork数量筛选:使用
forks:>100筛选fork数量超过100的项目。 - 语言筛选:使用
language:java筛选使用Java语言的项目。 - 仓库大小筛选:使用
size:>=1000筛选仓库大小超过1000KB的项目。 - 更新时间筛选:使用
pushed:>2020-01-01筛选自2020年1月1日之后有更新的项目。 - 搜索特定用户或组织的仓库:使用
user:username或org:organization。 - 搜索特定文件:使用
filename:README.md搜索包含特定文件名的项目。 - 搜索代码:必须登录GitHub账户,且仅对默认分支和小于384KB的文件进行索引。
- 排序搜索结果
- 按交互排序:
sort:interactions按反应和评论的最高组合数排序。 - 按反应排序:
sort:reactions按最高反应数排序。 - 按作者日期排序:
sort:author-date按作者日期降序排序。
| 命令 | 作用 |
|---|---|
-n |
演习模式 显示会删除的文件,不实际执行 |
-fd |
强制删除 必须加,因为git保护机制 |