Git丢弃本地修改


git status
可以查看所有的改动:
修改:modified
删除:deleted
添加:Untracked
git checkout -- file 如果没有-- 就变成了切换到另外一只分支了
git checkout -f 此时你修改的文件和删除的文件都会被恢复,但是你新添加的文件不会被删除
git clean –df 此时该仓库下所有新添加文件将被清除, 不会对修改和删除做任何处理
git clean filename –df 此时该新添加文件将被清除, 不会对修改和删除做任何处理

git clean参数
首先我们需要认清 忽略的文件 和 未被跟踪的文件。

忽略的文件:.gitignore 中忽略的文件;
未被跟踪的文件:没有被忽略,但是还没 git add 的文件
git clean -f # 删除:未被跟踪的文件
git clean –fd # 删除:未被跟踪的文件和文件夹
git clean –xfd # 删除:忽略的文件、未被跟踪的文件和文件夹
git clean [-xfd] -n-n # 会先打印一些将要删除的文件,并不执行删除动作,主要是查看是否有自己需要的不想被删除


未使用 git add
可以使用 git checkout -- 如果没有-- 就变成了切换到另外一只分支了 但是不会删除新建的分支
使用了 git add
可以使用 git reset HEAD file
此命令用来清除 git 对于文件修改的缓存。相当于撤销 git add 命令所在的工作。在使用本命令后,本地的修改并不会消失,而是回到了如(一)所示的状态。继续用(一)中的操作,就可以放弃本地的修改。
已经用 git commit
可以使用 git reset --hard HEAD^ 来回退到上一次commit的状态。此命令可以用来回退到任意版本:git reset --hard commitid

转载来自:原文链接:https://blog.csdn.net/kikajack/article/details/79846098

因为暂存区的存在,撤销修改分为几种情况(通过 git status 查看仓库状态时会提示相关撤销修改的命令):

修改后,文件没有放入暂存区(即文件一直在工作区):用 git checkout -- 文件名 撤销工作区的改动(回到跟版本库一样的状态,即回到最近一次 git commit时的状态,所有改动全部清除)
修改后,文件放入暂存区,且文件没有再次修改(即文件已经进入暂存区):分两步:先用 git reset <文件名> 撤销 git add 操作(此时更改仍留在工作区),再执行 git checkout -- 文件名 清除工作区的改动
修改后,文件放入暂存区,且文件再次修改:分三步:先用 git checkout -- 文件名 撤销工作区的改动,再用 git reset <文件名> 撤销 git add 操作(此时更改仍留在工作区),最后执行 git checkout -- 文件名 清除工作区的改动
通过 git checkout -- 文件名 命令可以撤销文件在工作区的修改。
通过 git reset 文件名 命令可以撤销指定文件的 git add 操作,即这个文件在暂存区的修改。
通过 git reset 命令可以撤销之前的所有 git add 操作,即在暂存区的修改。

git checkout -- 文件名 命令中的 -- 表示命令行在 -- 之后没有更多的选项。这样的好处是,如果碰巧有一个分支与文件名重名,仍然可以恢复该文件,而不是切换到同名的分支。


原文地址:https://www.cnblogs.com/Galesaur-wcy/p/14776722.html