diff差异
工作区和暂存区 : git diff
工作区和HEAD : git diff HEAD
暂存区和HEAD : git diff --cached
不同分支的差异 : git diff dev1.0 master
不同commit的差异:git diff sha1 sha2
指定文件: git diff sha1 sha2 -- test/ab.txt
说明:对于新增的文件,其只存在于工作区,且处于 Untracked 状态,Git 认为无论是哪两个 Git 区域之间的比对都没有意义,得到的结果是没有区别。使用git status查看;
撤销操作
本地仓库恢复暂存区内容 :
git reset HEAD -- 文件名 # 对某个文件进行恢复
git reset HEAD -- path # 对某个路径进行恢复
git reset HEAD # 对所有文件进行恢复
(使用 git diff -cached 做比较)
暂存区恢复工作区内容 :
git checkout -- 文件名 # 对某个文件进行恢复
git checkout -- path # 对某个路径进行恢复
git checkout # 对所有文件进行恢复
(使用 git diff 做比较)
本地仓库恢复工作区和暂存区内容 :
git reset --hard HEAD
(使用 git diff HEAD 工作区和本地仓库做比较)
git reset HEAD 本地仓库对暂存区的恢复,加了--hard,对工作区也一起恢复。
回到某个commit有两种方式:reset和revert(恢复)
git reset HEAD
git reset commit_id
git revert HEAD
git revert -n commit_id -n 表示不立即commit,只是恢复工作区内容。
git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit。
清除工作区变化
git reset --hard HEAD
git clean -df
清除暂存区变化
git rm -r --cached .
git rm -r --cached -- index.jsp
从工作目录中删除所有没有tracked过的文件和目录-d
git clean -df
说明:git clean经常和git reset --hard一起结合使用. 记住reset只影响被track过的文件, 所以需要clean来删除没有track过的文件. 结合使用这两个命令能让你的工作目录完全回到一个指定的<commit>的状态
git clean的用法
下面转发文件转发自:https://www.cnblogs.com/soaeon/p/10908712.html
比较暂存区和HEAD所含文件的差异?
操作场景如下:
* 修改readme.md 文档
* vi readme.md
* 加入到暂存区域
* git add readme.md
* 使用git diff -cached 做比较
比较工作区和暂存区所含文件的差异?
操作场景如下:
* 修改readme.md 文档
* vi readme.md
* 加入到暂存区域
* git add readme.md
* 使用git diff 做比较
让暂存区恢复成和HEAD的一样?
git reset HEAD
暂存区覆盖工作区(将工作区的修改抹掉)
操作场景如下:
* 修改 re'adme.md
* vi readme.md
* 比较工作区和暂存区的问价差异
* git diff
* 将暂存区覆盖工作区
* git checkout -- readme.md
* 再次比较工作区和暂存区的差异
* git diff
取消暂存区部分文件的更改?
操作场景如下:
创建了两个文件, 同时加入到了暂存区域, 发现还需要修改
soaeon@DESKTOP-FUJJTHR MINGW64 /f/gitstudy (master)
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: index.css
new file: index.js
index.css已经加入到暂存区域了, 但是还需要修改, 我们先从暂存区域撤回吧
soaeon@DESKTOP-FUJJTHR MINGW64 /f/gitstudy (master)
$ git reset HEAD index.css
执行git status 查看一下是否退回来了
soaeon@DESKTOP-FUJJTHR MINGW64 /f/gitstudy (master)
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: index.js
Untracked files:
(use "git add <file>..." to include in what will be committed)
index.css
再比较一下工作区和暂存区的差别
soaeon@DESKTOP-FUJJTHR MINGW64 /f/gitstudy (master)
$ git diff --cached
diff --git a/index.js b/index.js
new file mode 100644
index 0000000..e69de29
网友评论