git reset --hard HEAD留下未跟踪的文件

自作多情 提交于 2020-02-25 21:02:33

当我运行git reset --hard HEAD ,它应该重置为你所提取的原始版本,据我所知。 不幸的是,它留下了文件,因为git status显示了一个未跟踪文件的大列表。

你怎么告诉git“只是把它带回到最后一次拉动中,没有更多,没有更少”?


#1楼

如果您有文件,您仍然希望保留:

git clean -di将进行交互式清理,只允许您删除不再需要的文件/目录。


#2楼

您可能在某些时候进行了软重置,您可以通过执行来解决此问题

git add .
git reset --hard HEAD~100
git pull

#3楼

git reset --hard && git clean -dfx

或者,zsh提供'gpristine'别名:

alias gpristine='git reset --hard && git clean -dfx'

这真的很方便。

如果使用forked repo,请确保从正确的repo / branch获取和重置,例如:

git fetch upstream && git reset --hard upstream/master && git clean -df

#4楼

您必须使用git clean -f -d来删除工作副本中未跟踪的文件和目录。

如果需要将整个存储库重置为master(包括所有git子模块),请运行以下脚本:

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

#5楼

用户互动方式:

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以仅检查它将执行的操作。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!