Git学习——git-bash
Git-bash学习资料合集
- git 流程图
- workspace工作区/work tree工作树/work director工作目录
- stage 暂存区/缓存区/暂存目录/index 索引
- repository仓库、history版本库、本地仓库、remote远程仓库
- branch分支、main/master branch主分支、develop branch开发分支、debug分支等
- tag标签、patch补丁
- HEAD一个特殊游标
- 添加删除、(未)追踪、提交撤回、推送/拉取、合并、克隆
- 以下命令均在Windows系统测试,部分特征可能并不符合Linux系统,如路径大小写;且注意文件中的换行符
- ...
- git help 查看帮助文档
- git help : 显示常用的命令
- git help xxx: 打开命令的帮助网页;同git xxx --help
- -a / --all : 显示所有命令,198行输出
- --no-external-commands --all: 显示git-*之外的所有命令,189行输出
- -c / --config : 显示所有配置变量,911行输出
- -g / --guide : 显示git的概念指南,如核心教程、日常命令、工作流程等
- -i / --info / -m / --man xxx: 不带xxx都一样,且是默认的显示格式;带xxx,没用(至少再我的windows系统是这样)
- -w / --web : 在浏览器中显示帮助文档,windows默认
- git init 初始化仓库
- 【Git 'git init' 命令详解】
- -q / --quiet : 静默模式 仅打印erro/warning信息,成功则无显示;但其实成功初始化也并无太多输出
- --bare git_dir : 指定仓库信息存放文件夹"repository/版本库",默认.git(不区分大小写)会被视为仓库信息文件夹,其他名字则无效;如果没有参数,只输入--bare,会在当前文件夹生成仓库信息文件,若将该文件夹命名为.git(不区分大小写),则其父目录被视为工作目录
- --separate-git-dir=git-dir : 指定仓库信息存放文件夹,但在当前文件夹生成一个"链接文件",里面写有git-dir
- -b branch-name / --initial-branch=branch-name : 指定初始化仓库时创建的分支,默认为master/main,有时候需要main,但初始化默认为master,免得后面再改,再初始化时直接改分支名;或者直接修改全局配置git/etc/gitconfig:[init] defalitBranch=main
- 其余还有共享、格式等参数,不太懂,用不上
- .git文件夹详情见.git文件夹
- git add 添加文件到暂存区
- 【Git 'git add' 命令详解】
- Git add命令详解
- 【git系列】git-add 含义用法选项示例详解
- git add file : 添加文件到暂存区,可以添加多个文件,用空格隔开,也可以用通配符,如git add .,表示添加当前目录下所有文件
- -n / --dry-run : 模拟添加,不实际添加,可以用来查看哪些文件会被添加
- -v / --verbose : 详细输出,显示哪些文件被添加
- -f / --force : 强制添加,即使文件被忽略(.gitignore),也强制添加
- -i / --interactive : 交互式添加,可以手动选择哪些文件添加
- status : 类似于git status;显示以track的文件状态,包括已提交的修改(staged)和(unstaged)
- update : 类似于git add -u;更新已选中的文件,可以手动选择哪些文件更新,支持正则表达式*-以及移除-
- revert : 类似于git reset;还原已选中的文件
- add untracked : 添加未跟踪的文件
- patch : 不懂,似乎可以保存修改记录应用到其他仓库/分支
- diff : 类似于git diff;查看文件的更新记录
- -u / --update : 更新已跟踪的文件,即已添加到暂存区的文件,如果文件有修改,则更新到暂存区
- --renormalize : 清除CRLF/LF;统一不同系统之间的换行符 : CR——CR,CRLF——LF,CRCRLF——CRLF
- 其他参数不太懂
- git commit 提交暂存区的文件
- 【Git 'git commit' 命令详解】
- Git commit命令全面指南
- 【git系列】git-commit含义用法选项示例详解
- -m / --message msg : 提交信息,必选参数,否则会进入vim编辑器,输入提交信息
- -F / --file=file : 从文件中读取提交信息
- -a / --all : 自动添加已修改的文件到暂存区,再提交,即下次再提交这些文件不用再git add
- -u / --untracked-files : 显示未跟踪的文件,默认all
- -v / --verbose : 详细输出,显示哪些文件被提交
- --dry-run : 模拟提交,不实际提交,可以用来查看哪些文件会被提交
- --amend : 修改最后一次提交,即修改最后一次提交的提交信息、提交文件、提交人等
- --no-edit : 不进入vim编辑器,直接提交
- git status 查看仓库状态
- Git status命令详细指南
- 【Git 'git status' 命令详解】
- -s / --short : 简短输出,
- --long : 长格式输出
- -v / --verbose : 详细输出,显示文件的状态和文件名;类似于git diff --cached -v
- --ignored : 显示被忽略的文件
- -u / --untracked-files : 显示未跟踪的文件
- -b / --branch : 显示当前分支
- git diff 查看文件差异
- Git diff命令详解
- 【Git 'git diff' 命令详解】
- git diff : 比较工作区和暂存区的差异,即git diff HEAD
- git diff --cached : 比较暂存区和最新提交的差异,即git diff --cached HEAD
- git diff commit1 commit2 : 查看两个提交之间的差异
- git diff branch1 branch2 : 查看两个分支之间的差异
- -p / -u / -patch : 生成patch文件;git diff -p > patchfile
- --color-words / --word-diff : 仅显示已更改的单词而不是整个行;--color-words相当于--word-diff=color;--word-diff还有plain、porcelain、none模式
- --color / --no-color : 打开/关闭颜色区别不同,红、绿对应删除-、添加+,白色表示未改动
- --name-only : 仅显示更改的文件名,而不是详细的差异内容
- --name-status : 仅显示每个已更改文件的名称和状态
- git difftool : 可视化查看差异;实际上就是左右两个窗口显示文件内容
- git log 查看提交记录
- Git log命令的全面使用指南
- -p :显示每个提交中引入的差异(diff)。
- --oneline : 每个提交显示到一行;格式为commit哈希索引 commit信息
- -n / --max-count / -number : 显示提交的数量
- --author= / --committer= : 通过作者筛选提交
- --since= / --until= : 通过时间筛选提交
- --stat : 查看更改的统计信息
- --graph : 显示分支和合并历史的图形;单线开发,该选项可能没啥用
- --decorate : 查看每个提交的分支和标签
- git reflog 查看引用记录
- Git reflog命令使用解释
- 【Git 'git reflog' 命令详解】
- -n / --max-count / -number : 显示提交的数量
- --date= : 显示日期,可选值:relative、iso
- --grep= : 在提交信息中查找指定内容的提交
- show : git reflog相当于git reflog show,参数设置参考git log
- list : 显示所有分支对应的refs
- expire : 清理过期提交记录;日期可以设置,默认90天前
- exists : 检查ref是否存在记录
- delete : 从 reflog 中删除单个条目
- 有教程说存在--pretty参数,但该版本没有
- git shortlog 主要用于查看每个开发者的贡献情况
- git show 用于显示有关特定提交的信息
- git show-branch 查看多个分支的历史提交记录的命令
- git whatchanged 查看提交历史及其具体变动内容
- git ls-tree 列出指定提交或分支(包括索引或工作区)中的文件树
- git blame 查看文件每一行的修改历史记录的命令
- git config 查看和修改 Git 的配置信息
- git branch 创建、列出、删除、切换分支
- git checkout 切换分支、恢复文件状态、创建新分支等
- git switch 简化和改善切换、创建分支
- git revert 撤销提交
- git reset 撤销提交
- git restore 撤销提交
- git amend 修改最近的提交
- git merge 合并分支
- git cherry-pick 挑选提交
- git stash 暂时保存当前分支上未提交的修改,并在需要时恢复它们
- git mv 移动或重命名文件,同时自动更新 Git 索引(index)中的信息
- git rm 移除文件
- git clean 删除这些未被跟踪的文件和目录
- git archive 创建仓库内容快照的命令
- git gc 垃圾回收
- git fsck 检测 Git 仓库中的潜在问题,比如损坏的对象或不一致的引用。
- git grep 搜索已经被 Git 跟踪的文件内容,并且能够根据提交历史搜索特定版本的内容
- git rev-parse 解析 Git 引用(如分支名、标签、提交哈希等)并输出它们对应的 Git 对象哈希值
- git rev-parse 将一个分支或文件的补丁应用到另一个分支或文件上
- git format-patch 将一个分支或文件的补丁应用到另一个分支或文件上
- git tag 给特定的提交添加标签
- git describe获取与指定提交相关的最新的标签及其后续提交信息
- git remote 管理本地Git仓库与远程仓库的交互
- git push 将本地的提交推送到远程仓库
- git pull 从远程仓库获取最新代码并合并到本地分支
- git fetch 从远程仓库获取最新代码
- git clone 从远程仓库复制完整的 Git 仓库到本地
- .git文件夹详情(包括.gitignore)
- config: 配置文件
- repositoryformatversion:仓库格式版本。
- filemode:视文件权限的修改是否为差异。
- bare:是否是裸仓库。
- logallrefupdates:日志更新。
- symlinks:符号链接。
- ignorecase:忽略大小写。
- HEAD: 指向当前分支的指针
- index: 暂存区文件
- objects: 是Git仓库的核心组件,保存了所有提交历史和版本信息。
- pack: 是Git用来存储压缩后的Git对象文件的目录
- .pack文件:经过打包算法压缩后的Git对象文件,多个Git对象文件被打包成一个.pack文件。
- .idx文件:.pack文件的索引文件,包含Git对象的索引信息,提高Git对象的访问速度。
- info目录: 存储一些辅助信息和索引文件,用于加快对象访问速度。
- 哈希目录:除了上述两个子目录外,objects目录下还包含一系列以两个字符为前缀的子目录,用于存储具体的对象文件。Git使用SHA-1哈希算法对每个对象 进行唯一标识,每个对象的文件名是由哈希值组成的。
- refs: 存放所有的引用
- heads:存储分支引用,每个分支都对应一个文件,文件名与分支名称相同。这些文件中的内容是指向分支最新提交的指针
- tags:存储标签引用,每个标签都对应一个文件,文件名与标签名称相同。这些文件中的内容是指向标签的对象的指针。
- remotes:存储远程引用,每个远程仓库都对应一个子目录,目录名与远程仓库名称相同。在每个远程仓库目录下,可以存储与该远程仓库相关的引用,如远程分支引用。
- logs: 存放所有的提交日志
- info: 包含一些辅助性的信息
- hooks: 包含一些钩子脚本。git钩子脚本在.git文件夹中存储的是模板文件,需要将其重命名为去掉.sample后缀,并赋予可执行权限,才能生效。每个git仓库的钩子脚本都是独立的,不会被版本控制。
- description: 描述文件
- COMMIT_EDITMSG: 最后一次提交的编辑信息
- ORIG_HEAD: 上一次提交的指针
- FETCH_HEAD: 上一次获取的远程分支的指针

相关概念


本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 星星点灯!