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的節(jié)點,不保留修改,已有的改動會丟失
git clean -xdf #刪除未被跟蹤untracked的文件
說明
git checkout . #本地所有修改的。沒有的提交的,都返回到原來的狀態(tài)
git stash #把所有沒有提交的修改暫存到stash里面??捎胓it stash pop回復(fù)。
git reset --hard HASH #返回到某個節(jié)點,不保留修改,已有的改動會丟失。
git reset --soft HASH #返回到某個節(jié)點, 保留修改,已有的改動會保留,在未提交中,git status或git diff可看。
git clean 參數(shù)
-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 不實際刪除,只是進行演練,展示將要進行的操作,有哪些文件將要被刪除。(可先使用該命令參數(shù),然后再決定是否執(zhí)行)
-f 刪除文件
-i 顯示將要刪除的文件
-d 遞歸刪除目錄及文件(未跟蹤的)
-q 僅顯示錯誤,成功刪除的文件不顯示
-x 不管是否是.gitignore文件里指定的文件夾和文件,都執(zhí)行相關(guān)操作
【 -x 】實例:
git clean -f #刪除當前目錄下所有沒有track過的文件,不會刪除.gitignore文件里指定的文件夾和文件, 不管這些文件有沒有被track過
git clean -xf #刪除當前目錄下所有沒有track過的文件, 不管是否是.gitignore文件里指定的文件夾和文件
git clean -df #返回到某個節(jié)點,(未跟蹤文件的刪除)
【注意】:
git reset 刪除的是已跟蹤的文件,將已commit的回退
git clean 刪除的是未跟蹤的文件
SourceTree
- 頻繁彈出輸入密碼頁面,在終端輸入以下命令,重新登錄即可解決:
git config --global credential.helper osxkeychain