Git 查看状态(git status)、查看提交记录(git log)和提交日志(git reflog)
Git 查看状态(git status)、查看提交记录(git log)和提交日志(git reflog)
-
git status
查看当前工作区
、暂存区
、仓库
和远程仓库
的状态1.1 三大区域一览(输出模板)
On branch masterYour branch is up to date with 'origin/master'.Changes to be committed:(use "git restore --staged ..." to unstage)modified: A.javaChanges not staged for commit:(use "git add ..." to update)modified: B.javaUntracked files:(use "git add ..." to include)C.txt
1.2 常见提示 & 下一步动作
状态 提示语 通常下一步 未跟踪 Untracked files git add 文件名
已修改未暂存 Changes not staged git add
或git restore
放弃已暂存 Changes to be committed git commit
ahead/behind/ Your branch is ahead/behind of ‘origin/xx by n commits’ git push
/git pull
下面重点解释
Your branch is up to date with 'origin/master'.
这句话的意思是 本地的
master
分支和最后一次同步那一刻
的origin/master
分支是同步
的。这个
“同步”
的判定是通过比较./git/refs/heads/master
和 最后一次同步保存下来的./git/remotes/origin/master
这两者的SHA-1
来实现的。SHA-1
是一种 哈希算法,用于 唯一标识 每一个提交(commit)、标签(tag)、树(tree)等对象。这里的SHA-1
就是一串40位的十六进制字符串
,比如:e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
,它是根据 文件内容 + 元数据 计算出来的“指纹”
,只要内容一变,SHA-1
就变了。如果远程昨天又有人推了新提交,而你还没执行
git fetch
或git pull
,那么远程实际已经往前走了,可本地保存的./git/remotes/origin/master
记录扔停留在旧位置,Git此时依旧会告诉你"up to date"
。所以每次提交代码前,如果想要查看本地分支跟远程分支是
同步状态
还是领先、落后状态
,都需要先git fetch
才能得到最新真相。如果不想查看状态而是想直接提交代码,那么直接使用
git pull
+git push
。1.3 示例
-
on branch master
:表示仓库的当前分支为master
-
Your branch is up to date with 'origin/master'
:表示本地的master分支
和最后一次同步时
的远程master分支
是一致的。 -
Changes not staged for commit...
:这里表示我的两个文件有改动,但尚未保存到暂存区,这两个文件是 gulimall-product/src/main/jjava/com/xunqi/gilimall/product/service/AttrService.java 和 gulimall-search/src/test/java/com/xunqi/gulimall/search/GulimallSearchApplicationTests.java -
no changes added to commit (use "git add" and /or "git commit -a")
:代表当前暂存区为空,没有可以提交的文件。
-
-
git log 查看每次提交的记录
git log
可以查看提交历史
git log --oneline
可以查看简洁的提交历史
-
git reflog查看引用日志
官方口吻:git reflog
记录本地仓库中Head和分支指针的移动记录(如切换分支、重置、合并、提交等),不依赖于提交是否可达,即使提交被回退或分支被删除,也能被找回。
一句话就是:git reflog
可以记录用户对每一个分支中每一个节点的操作记录(包括重置、合并、提交等),用户可以通过这些记录的哈希值
找回对应的版本内容。