2.本地仓库
本文最后更新于:2021年9月8日 晚上
本地仓库
仓库版本控制
-
git status
:查看本地仓库状态 -
git diff
:比较工作区和暂存区修改git diff head
:比较工作区和暂存区快照的差异git diff --cached head
:比较暂存区和最近一次commit后的修改
-
git log
:显示从最近开始的提交过的版本信息(包含多种选项,具体情况使用)- n
:限制数量-p
:展开显示每次提交内容的差异--author="xxx"
:按提交者名字搜索并显示(非整个单词匹配)--grep="xxx"
:按指定内容搜索并显示-- <file>
:仅显示包含指定文件修改的commit--graph
:显示分支操作图--pretty=oneline
:显示日志简化信息,每条信息只占一行
gitk
可以启动图形化工具来查阅提交历史 -
git reset xxx
:回退到仓库版本xxx(之后的版本不保留)--hard
:回退的同时,同时会修改工作区到回退版本xxx
- Git中用
head
表示当前版本,上个版本是head^
,上上个版本是head^^
,也可用head~10
来表示上10个版本 - 直接用
git log
中显示commit id(版本号)
前几位
- Git中用
-
git revert xxx
- 撤销某次commit操作(之后的操作仍然保留)
-
git reflog
:查看本地所有分支的所有操作记录(包括已经被删除的 commit 记录和 reset 的操作) -
git mv <文件名> <文件新名>
:重新命名文件- 同样需要提交修改
- git理解为一次移动操作
工作区和暂存区
- 工作区:就是你在电脑里能看到的目录
- 版本库:工作区有一个隐藏目录
.git
,这个不算工作区,而是Git的版本库- 版本库中存在一个称为stage(或index)的暂存区,还有Git为为我们自动创建的第一个分支
main
,以及指向master
的一个指针叫HEAD
- 版本库中存在一个称为stage(或index)的暂存区,还有Git为为我们自动创建的第一个分支
-
我们把文件往Git版本库里添加的时候,是分两步执行的:
第一步是用
git add
把文件添加进去,实际上就是把文件修改添加到暂存区;第二步是用
git commit
提交更改,实际上就是把暂存区的所有内容提交到当前分支。因为我们创建Git版本库时,Git自动为我们创建了唯一一个
master
分支,所以,现在,git commit
就是往master
分支上提交更改
管理修改
为什么Git比其他版本控制系统设计得优秀,因为Git跟踪并管理的是修改,而非文件
- git每次都会对仓库内发生的修改情况进行记录,只要存在修改就会存在记录
- 考虑这样一种情况:第一次修改 ->
git add
-> 第二次修改 ->git commit
- add会将第一次修改提交到暂存区,commit只会将暂存区的文件提交
- 但是这并不意味着第二次修改不存在了,我们可以再进行add后再提交,仍然可以提交第二次修改
撤销操作
git checkout
可以用来新建或者切换分支, 也可以用来回退文件版本- 从
Git 2.23
版本开始引入了两个新的命令:git switch
切换分支git restore <文件名>
:撤销对文件的修改,还原工作区的文件--staged
:将暂存区的文件从暂存区撤出,但不会更改文件的内容- 所有如果想完全撤销提交到暂存区的文件,顺序是:暂存区撤销->工作区撤销
git commit --amend
:修改最后一次的提交- 紧跟着上次提交使用,可以修改上次提交的说明
- 如果刚才提交时忘了暂存某些修改,可以先补上暂存操作,然后再运行
--amend
提交- 两次
commit
但产生一次提交
- 两次
- 如果修改被commit了,那么只能回退版本
删除文件
- 一般情况下,你通常直接在文件管理器中把没用的文件删了,或者用
rm
命令删了 - 这个时候,Git知道你删除了文件,因此,工作区和版本库就不一致了,
git status
命令会立刻告诉你哪些文件被删除了 - 现在你有两个选择,
- 一是确实要从版本库中删除该文件,那就用命令
git rm
删掉,并且git commit
- 或者用
git add <file>
删掉
- 或者用
- 另一种情况是删错了,因为版本库里还有,所以当然可以撤销修改
- 注意这里说的是版本库,所以包括add的文件
- 一是确实要从版本库中删除该文件,那就用命令
- 注意:从来没有被添加到版本库就被删除的文件,是无法恢复的!
git rm --cached <文件名>
:将文件从版本库中删除,但是工作区中不删除
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!