- 工作区:你在工作区中编辑文件。
- 暂存区:使用
git add将要提交的文件添加到暂存区。 - 版本库:使用
git commit将暂存区的文件快照保存到版本库
舍弃当前工作区的更改
1、一个文件
git checkout --
git checkout -- path/to/your/file.txt
放弃所有未提交的更改,但是会同时舍弃工作区和暂存区的修改
2、所有的
不可逆操作:执行
git reset --hard后,你所有的未提交更改都会丢失。确保你真的不需要这些更改或者已经将其备份。影响暂存区和工作区:这个命令不仅恢复工作区的文件,也会将暂存区中的文件恢复到最近一次提交的状态。
git reset --hard
舍弃暂存区的更改
如果你只是想取消暂存区中的更改,但保留工作区的更改,可以使用:
git reset HEAD
或者取消所有暂存的更改:(我感觉这里用处不大,这里还不如直接拿git add .全部冲刷了)
git reset HEAD
这将把暂存区的更改撤销,但保留工作区的更改。
git diff 是用来比较Git版本库中不同快照之间的差异。默认情况下,git diff 比较的是工作目录中的文件和暂存区(即索引)中的文件。如果你对 git diff 命令提供不同的参数,可以比较不同的区:
工作目录与暂存区:默认情况下,
git diff比较的是工作目录中修改但还未暂存的文件与暂存区中的文件。git diff暂存区与最新提交:通过使用
--cached或--staged选项,可以比较暂存区中的文件和最新提交(HEAD)之间的差异。git diff --cached git diff --staged工作目录与最新提交:通过提供
HEAD参数,可以比较工作目录中的文件和最新提交之间的差异。git diff HEAD两个提交之间的比较:你可以比较两个提交之间的差异,指定两个提交的哈希值或分支名称。
git diff commit1 commit2特定文件的比较:你还可以比较特定文件在两个不同快照(提交)之间的差异。
git diff commit1 commit2 -- path/to/file
通过使用这些不同的选项和参数,git diff 提供了非常灵活的方式来比较不同版本之间的差异。
git reset --hard fe8d9f1
能直接返回,目前的暂存区域都没了,git log里面都回退都没了
要还想看原来的
git reflog
显示差不多这样:
$ git reflog
9e18a4e (HEAD -> master) HEAD@{0}: reset: moving to 9e18a4e
fe8d9f1 HEAD@{1}: reset: moving to fe8d9f1
9e18a4e (HEAD -> master) HEAD@{2}: reset: moving to 9e18a4e
fe8d9f1 HEAD@{3}: commit: 已经能靠左,但是好像6个没有对
应
2a6f124 HEAD@{4}: commit: 快捷提交
9e18a4e (HEAD -> master) HEAD@{5}: commit (initial): 快
捷提交
git reset --hard
也能够删除当前的没有提交的“暂存”区
git branch
git checkout <new-branch-name>