case1:丢弃未使用 git add 缓存的代码
#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
- 频繁弹出输入密码页面,在终端输入以下命令,重新登录即可解决:
git config --global credential.helper osxkeychain