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


当前回答

用户互动办法:

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-- 干燥运行检查它能做什么

其他回答

这可以用一个 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

如果您只想删除列表中未被“ gitt status” 跟踪的文件

git stash save -u
git stash drop "stash@{0}"

我更喜欢这个而不是“ 开始清理” , 因为“ 开始清理” 将会删除被忽略的文件, 所以您的下一栋建筑必须重建一切, 您也可能丢失您的 IDE 设置 。

git-清洁- 从工作树中移除未跟踪的文件

简要说明摘要

git clean [-d] [-f] [-i] [-n] [-q] [-e <pattern>] [-x | -X] [--] <path>…​

说明说明

通过递归式删除未在版本控制下的文件来清除工作树,从当前目录开始.

通常, 只有 Git 未知的文件才会被删除, 但是如果-x选项被指定,被忽略的文件也会被删除。例如,这可以用于删除所有构建产品。

任何可选的或可选的<path>...给出了参数,只有这些路径受到影响。


步骤1是用-n选项 :

# Print out the list of files and directories which will be removed (dry run)
git clean -n -d

清洁步骤 -注意: 这将删除文件:

# Delete the files from the repository
git clean -f
  • 要删除目录,运行git clean -f -dgit clean -fd
  • 要删除被忽略的文件,运行git clean -f -Xgit clean -fX
  • 要删除被忽略和未丢弃的文件,请运行git clean -f -xgit clean -fx

Note案件差别X后两项命令。

如果(如果)clean.requireForce设置为您的配置中的“ true”(默认),需要指定-f否则不会真的发生任何事。

再次见git-clean需要更多信息的医生。


选项选项选项

-f, --force

如果 Git 配置变量为 clean. requireForce 不被设定为假, 除非给定, 否则 Git 配置变量为 clean.requireForce 将拒绝运行-f, -n-i.

-x

不要使用标准忽略规则,$GIT_DIR/info/exclude,但是仍然使用-e选项。这样可以删除所有未跟踪的文件, 包括构建产品。 这可以用来( 可能与 git 重设结合) 创建一个纯净的工作目录, 以测试一个干净的构建 。

-X

只删除被 Git 忽略的文件。 这也许有助于从零开始重建一切, 但保存手动创建的文件 。

-n, --dry-run

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

-d

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

如果需要从特定的子目录中删除未跟踪的文件,

git clean -f {dir_path}

并合并删除未跟踪的 dir/ file 和被忽略的文件 。

git clean -fxd {dir_path}

在此之后, 您将只对文件进行修改git status.

使用git reset HEAD <file>以卸开一个文件