当我运行git reset --hard HEAD
时,根据我的理解,它应该重置为您所提取的原始版本。不幸的是,它会留下文件,因为git status
显示了一个未跟踪文件的大列表。
你怎么告诉git“只要把它带回到最后一次拉动中的东西,仅此而已,”
答案 0 :(得分:777)
您必须使用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
答案 1 :(得分:49)
如果您有文件,您仍想保留:
git clean -di
将进行交互式清理,只允许您删除不再需要的文件/目录。
答案 2 :(得分:36)
x
或者,zsh提供了一个' gpristine'别名:
y
哪个非常方便
答案 3 :(得分:14)
用户互动方式:
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 for force
-d表示目录
-x表示忽略的文件(如果需要,可添加)
注意: 添加 -n 或 - 干运行以查看它将执行的操作。
答案 4 :(得分:3)
您可以使用git stash
。您必须指定--include-untracked
,否则将遇到原始问题。
git stash --include-untracked
然后将最后一个条目放到存储柜中
git stash drop
答案 5 :(得分:1)
您要查找的命令是git clean
答案 6 :(得分:0)
git-clean
用于删除工作树中未跟踪的文件。以下是一些可以与git clean
命令一起使用的选项。
-d
在未指定路径时使用。因此,将git递归到未跟踪的目录中将其删除。
-f/--force
要删除嵌套的未跟踪文件。
-i/--interactive
显示将要执行的操作并以交互方式清除文件。
-n/--dry-run
在不删除任何内容的情况下显示会发生的情况。
-x
忽略文件
示例:git clean -f -d
->删除当前目录中所有子目录中所有未跟踪的文件。
答案 7 :(得分:-3)
删除fields:
articleImage:
src: ../../../media/image.jpg
alt: img
文件夹以外的所有内容,然后运行
.git
答案 8 :(得分:-13)
您可能在某个时候进行了软重置,您可以通过执行
来解决此问题git add .
git reset --hard HEAD~100
git pull