git 丢弃、删除、移除本地的修改

case1:丢弃未使用 git add 缓存的代码

如果你想丢弃所有修改(包括已跟踪和未跟踪的文件),可以组合使用下列命令:
git checkout -- .
git clean -fd

#1-常见的方式 没有生效
git checkout -- file #放弃某个文件
git checkout .        #放弃所有

#2-组合方式, #有效
#2.1
git checkout . #放弃所有
git clean -xdf  #删除未被跟踪untracked的文件

#2.2
git reset --hard #回退到上一次commit的节点,不保留修改,已有的改动会丢失
git clean -xdf    #删除未被跟踪untracked的文件

说明

git checkout . #本地所有修改的。没有的提交的,都返回到原来的状态
git stash #把所有没有提交的修改暂存到stash里面。可用git stash pop回复。

git reset --hard HASH #返回到某个节点,不保留修改,已有的改动会丢失。
git reset --soft HASH #返回到某个节点, 保留修改,已有的改动会保留,在未提交中,git status或git diff可看。

git clean 参数
    -q, --quiet           do not print names of files removed
    -n, --dry-run         dry run
    -f, --force           force
    -i, --interactive     interactive cleaning
    -d                    remove whole directories
    -e, --exclude <pattern>
                          add <pattern> to ignore rules
    -x                    remove ignored files, too 也删除被忽略的文件
    -X                    remove only ignored files 仅删除被忽略的文件

【说明】:
    -n 不实际删除,只是进行演练,展示将要进行的操作,有哪些文件将要被删除。(可先使用该命令参数,然后再决定是否执行)
    -f 删除文件
    -i 显示将要删除的文件
    -d 递归删除目录及文件(未跟踪的)
    -q 仅显示错误,成功删除的文件不显示
    -x 不管是否是.gitignore文件里指定的文件夹和文件,都执行相关操作

【 -x 】实例:
git clean -f   #删除当前目录下所有没有track过的文件,不会删除.gitignore文件里指定的文件夹和文件, 不管这些文件有没有被track过
git clean -xf  #删除当前目录下所有没有track过的文件, 不管是否是.gitignore文件里指定的文件夹和文件

git clean -df #返回到某个节点,(未跟踪文件的删除)

【注意】:
git reset 删除的是已跟踪的文件,将已commit的回退
git clean 删除的是未跟踪的文件

SourceTree

  1. 频繁弹出输入密码页面,在终端输入以下命令,重新登录即可解决:
    git config --global credential.helper osxkeychain
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容