常用命令
2022-09-14 本文已影响0人
欢西西西
1、git status
查看工作区和暂存区的状态
2、 日志:git log 和 git reflog
-
git log显示当前分支所有提交过的版本信息,常用选项。
git log [filename]显示指定文件的修改[提交]记录
示例:git log --since=2.weeks --author=longpp --grep=fix --oneline
git reflog 可以查看所有分支的所有操作记录(包括已经被删除的 commit 记录和 reset 的操作)。示例:
git reflog
3、 撤销、暂存与回滚
情况一、文件被修改了,但未执行git add操作,想丢弃修改(working tree内撤销)
- 指定文件:
git checkout [filename] - 所有修改的文件:
git checkout .
情况二、文件已经执行了git add操作,但是本次又不想提交它了(index内撤销)
-
git reset HEAD [filename],取消暂存区的指定文件,此时状态会回到情况一 - 再对暂存区剩下的要提交的执行commit就行了
- 不传filename则会取消暂存区所有修改
情况三、文件已修改未git add,需要暂存已经修改的内容
- 执行
git stash save '本次暂存备注' - stash并不会存新增的文件,新增的文件要先add再stash
- 查看暂存的列表:
git stash list
- 弹出暂存列表里最新一次的缓存:
git stash pop - git stash 文档
- 如果已经操作了git add又不想提交了,想把修改暂存起来,那先按情况二操作,再暂存
4、 git checkout、git reset 和 git revert
常用操作:
| 命令 | 提交层面 | 文件层面 | 说明 |
|---|---|---|---|
| checkout | 切换分支/标签git checkout [branch name]、git checkout [tag name]。会将当前HEAD指针指向指定的提交 |
丢弃工作区的修改git checkout [filename]、或将文件切换到某次提交里的版本git checkout [commit_id] [file name]
|
切换分支只切换HEAD的指针,不会移动分支本身的指针 |
| reset | 只应操作那些还未与他人共享过的变更:git reset --hard [commit_id]。否则建议使用revert |
将文件从暂存区中移除git reset HEAD [filename]
|
会改变分支所指向的提交,并且丢弃它之后的提交 |
| revert | 撤销公共分支上的变更git revert [commit_id]
|
不支持 | 通过新建一个提交来撤销之前的某次提交。因为不会重写提交历史,被认为是一种安全的撤销操作。 |
从branch dev checkout到master
reset到commit 1
revert commit2,则本次自动提交的内容就是还原commit2的更改,实际并不影响之前的提交
5、git blame
git blame [filename] 查看文件每行的作者、修改时间、提交SHA-1值
image.png
6、git rm 删除
- 删除本地和暂存区中的文件:
git rm a.txt(前提是文件未修改),如果修改过,会删除失败,此时需要使用 -f 或 --cached -
git rm -f a.txt强制删除本地和暂存区中的文件 -
git rm --cached a.txt删除暂存区中的文件,保留本地文件