git/dvc笔记
目录
- git
- HEAD
- <commit_id>
- git checkout
- git reset
- 文件跟踪状态
- git ls-files
- git rm
- .gitignore
- git diff
- 首次使用git的必要配置
- dvc
- dvc install
- dvc status
- dvc diff
- dvc config cache.type
git
HEAD
HEAD表示分支的最新提交节点
前一个提交版本:HEAD^ == HEAD~1 == HEAD~
前两个提交版本:HEAD^^ == HEAD~2
可以使用@
作为HEAD的别名
<commit_id>
<commit_id>可以是以下格式:
- 哈希值
- <branch_name>/<branch_name>^/<branch_name>~2
- HEAD/HEAD^/HEAD~1/@
- 标签名
- 引用路径<branch_name>@{n}和<branch_name>@{time}
git checkout
git checkout <commit_id> -- <file_path>
:恢复或检出指定文件的内容git checkout <commit_id>
:检出特定的提交git checkout -b <new_branch_name> <commit_id>
:基于指定的提交创建一个新分支,并立即切换到这个新分支上
git reset
在执行了git commit后想要撤回最近这次(或多次)提交,则需要使用git commit。
git reset --soft
:工作区和暂存区中的修改内容会保留,提交新的commit前需要将不需要的修改unstagegit reset
/git reset --mixed
:工作区中的修改内容会保留,但暂存区不会,需要手动将修改内容重新add到暂存区中git reset --hard
(很少用到):工作区和暂存区中的修改内容都会删掉,也就是被撤回commit中的修改全都不需要的情况下才使用
文件跟踪状态
仓库中的文件分为以下状态:
- 未跟踪(Untracked)
- 已跟踪(Tracked)
- 未修改(Unmodified)
- 已修改(Modified)
- 已暂存(Staged)
暂存区(.git/index)记录着所有已跟踪文件各种信息:
- 文件路径:文件在项目中的位置。
- 文件的元数据:如文件的修改时间、权限等。
- 文件内容的哈希值(blob 哈希):这是文件内容的唯一标识,用于检测文件是否发生变化。
git ls-files
git ls-files
:列出所有已跟踪的文件git ls-files --others
:列出所有未跟踪的文件git ls-files --ignored
:列出所有被.gitignore
忽略的文件git ls-files --cached
:列出暂存区(索引)中的文件git ls-files --others --exclude-standard
:列出所有未跟踪且不在.gitignore中的文件
git rm
git rm <file>
:把文件从工作区和暂存区同时删除git rm --cached <file>
:把文件从暂存区中删除,但工作区中文件仍然保留
.gitignore
.gitignore对已跟踪文件没有作用,需要使用git rm来先将文件状态变成未跟踪
.gitignore中以/结尾的只对目录起作用,不以/结尾的同时对文件和目录起作用
git diff
git diff
:比较工作区与暂存区之间的差异(即查看尚未暂存的改动)git diff --cached
:比较暂存区与最新一次提交(HEAD)的差异git diff HEAD
:比较工作区与最新一次提交的差异git diff <commit1> <commit2>
:查看任意两个提交之间的文件内容差异git diff <branch1> <branch2>
:比较两个分支间的文件差异
首次使用git的必要配置
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
git config --global credential.helper cache
dvc
dvc install
默认会增加以下hook:
.git/hooks/post-checkout
:dvc checkout.git/hooks/pre-commit
:dvc status.git/hooks/pre-push
:dvc push
dvc status
无参数情况下,dvc status
比较的是工作区和缓存区的文件差异
dvc diff
无参数情况下,dvc diff
比较的是工作区和HEAD的差异
dvc config cache.type
默认情况下,cache.type
为reflink,copy,但由于大部分文件系统中reflink不可用,所以实际上默认使用的是copy模式,