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


当前回答

git-clean 是你正在寻找的,它被用来从工作树中删除未追踪的文件。

其他回答

用途: git clean [-d] [-f] [-i] [-n] [-q] [-e ] [-x♰ -X] [--]...

-q, --quiet           do not print names of files removed
-n, --dry-run         dry run
-f, --force           force
-i, --interactive     interactive cleaning
-d                    remove whole directories
-e, --exclude <pattern>
                      add <pattern> to ignore rules
-x                    remove ignored files, too
-X                    remove only ignored files

这可以用一个阴影脚本进行,我使用这个脚本列出什么将被删除,然后让我确认操作。

这是有用的,因为有时我有插件或其他文件我会喜欢检查之前删除一切。

#!/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 docs 删除 Untracked 文件是 git clean

git clean - 从工作树中删除未追踪的文件

可用的选项:

git clean 
    -d -f -i -n -q -e -x -X (can use either)

解释:

1 - D

除未追踪的目录外,除未追踪的文件外,除未追踪的目录外,除未追踪的目录外,除非由另一个 Git 存储库管理,则不会默认删除。

如果 Git 配置变量 clean.requireForce 未设置为虚假,则 git clean 将拒绝运行,除非提供 -f、 -n 或 -i。

3 -i, - 互动

4 -n, -dry-run

5 -q, - 放心

保持沉默,只报告错误,但不是成功删除的文件。

除了在.gitignore (每个目录) 和 $GIT_DIR/info/exclude 中找到的外,还考虑这些模式在无效的规则中。

7、X

8、X

删除仅由 Git 忽略的文件,这可能有助于重建一切,但保持手动创建的文件。

git-clean 是你正在寻找的,它被用来从工作树中删除未追踪的文件。

如果没有其他工作,可以使用下列组合来简单地删除“吉特状态”命令列出的所有变化:

git add -A& git commit -m temp && git reset --hard HEAD^

这将首先完成您的所有变化,然后创建一个暂时的承诺,然后放弃它。