我如何从当前工作树中删除未跟踪的本地文件 ?


当前回答

我认为安全和容易的方法就是这个!

git add .
git stash 

欲了解更多信息https://www.atlassian.com/git/tutorials/saving-changes/git-stash#stashing-your-work

其他回答

使用使用git clean -f -d以确保目录目录目录目录也删除。

  1. 不要删除任何东西, 只显示会做什么。

    git clean -n
    

    git clean --dry-run
    
  2. 除未跟踪的文件外,删除未跟踪的目录。如果一个未跟踪的目录由不同的 Git 仓库管理,则默认不会删除。使用该目录。-f如果您真的想要删除此目录, 选项将两次 。

    git clean -fd
    

然后您可以检查您的文件是否真的已删除git status.

这可以用一个 shell 脚本来完成, 我用这个笔记本来列出要删除的内容, 然后让我确认操作 。

这是有用的,因为我有时有补丁 或其他文件,我想检查 之前擦走一切。

#!/bin/bash
readarray -t -d '' FILES < <(git ls-files -z --other --directory)
if [ "$FILES" = "" ]; then
    echo  "Nothing to clean!"
    exit 0
fi
echo -e "Dirty files:\n"
printf '  %s\n' "${FILES[@]}"
DO_REMOVE=0
while true; do
    echo ""
    read -p "Remove ${#FILES[@]} files? [y/n]: " choice
    case "$choice" in
        y|Y )
            DO_REMOVE=1
            break ;;
        n|N )
            echo "Exiting!"
            break ;;
        * ) echo "Invalid input, expected [Y/y/N/n]"
            continue ;;
    esac
done

if [ "$DO_REMOVE" -eq 1 ];then
    echo "Removing!"
    for f in "${FILES[@]}"; do
        rm -rfv -- "$f"
    done
fi

用户互动办法:

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/arsdumpgenerator/inspector/ [y/N]? y
Remove src/com/arsdumpgenerator/manifest/ [y/N]? y
Remove src/com/arsdumpgenerator/s3/ [y/N]? y
Remove tst/com/arsdumpgenerator/manifest/ [y/N]? y
Remove tst/com/arsdumpgenerator/s3/ [y/N]? y

- i 用于交互式
-f 用于武力
-d 用于目录
- 被忽略文件的x( 需要时添加)

注: 添加添加添加- n,n-- 干燥运行检查它能做什么

清除 Git 仓库和所有子模块

以下命令将清除当前 git 仓库及其所有子模块的递归 :

(git clean -d -x -f && git submodule foreach --recursive git clean -d -x -f)

我总是用这个:

git clean -fdx

对于一个非常大的项目,你也许想运行它几次。