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

时间:2010-12-01 18:26:26

标签: git

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

你怎么告诉git“只要把它带回到最后一次拉动中的东西,仅此而已,”

9 个答案:

答案 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