當我運行git reset --hard HEAD
,它應該重置爲你所提取的原始版本,據我所知。 不幸的是,它留下了文件,由於git status
顯示了一個未跟蹤文件的大列表。 git
你怎麼告訴git「只是把它帶回到最後一次拉動中,沒有更多,沒有更少」? fetch
若是您有文件,您仍然但願保留: spa
git clean -di
將進行交互式清理,只容許您刪除再也不須要的文件/目錄。 code
您可能在某些時候進行了軟重置,您能夠經過執行來解決此問題 generator
git add . git reset --hard HEAD~100 git pull
git reset --hard && git clean -dfx
或者,zsh提供'gpristine'別名: it
alias gpristine='git reset --hard && git clean -dfx'
這真的很方便。 zsh
若是使用forked repo,請確保從正確的repo / branch獲取和重置,例如: ast
git fetch upstream && git reset --hard upstream/master && git clean -df
您必須使用git clean -f -d
來刪除工做副本中未跟蹤的文件和目錄。 class
若是須要將整個存儲庫重置爲master(包括全部git子模塊),請運行如下腳本: stream
git reset --hard HEAD git clean -f -d git checkout master git fetch origin master git reset --hard origin/master git pull git submodule update git submodule update --init --recursive git submodule foreach git reset --hard HEAD git submodule foreach git clean -f -d git submodule foreach git submodule update --init --recursive git submodule foreach git fetch git submodule foreach git pull git status
用戶互動方式:
git clean -i -fd Remove .classpath [y/N]? N Remove .gitignore [y/N]? N Remove .project [y/N]? N Remove .settings/ [y/N]? N Remove src/com/amazon/arsdumpgenerator/inspector/ [y/N]? y Remove src/com/amazon/arsdumpgenerator/manifest/ [y/N]? y Remove src/com/amazon/arsdumpgenerator/s3/ [y/N]? y Remove tst/com/amazon/arsdumpgenerator/manifest/ [y/N]? y Remove tst/com/amazon/arsdumpgenerator/s3/ [y/N]? y
-i用於互動
-f表明武力
-d用於目錄
-x表示忽略的文件(若是須要,添加)
注意: 添加-n或--dry-run以僅檢查它將執行的操做。