Git: 如何获取所有未跟踪文件的列表,忽略未跟踪的子模块?
Git: How to get a listing of all untracked files, ignoring untracked submodules?
在脚本中,我想检查 Git 存储库是否干净。万一它不干净,应该把变化藏起来。对于支票,我使用:
git diff-index HEAD --
找出被跟踪文件的修改并:
git ls-files --others
确定是否存在未跟踪的文件。不幸的是,git ls-files --others
还会报告无法隐藏的未跟踪子模块。
是否有一些选项或不同的 Git 命令 returns 与 git ls-files --other
相同的结果 除了未跟踪的子模块 ?
git
无法查看未跟踪的目录是否应该 成为子模块。它只是一个未跟踪的目录。
您可能会检查 .git
子目录,以检查未跟踪的目录是否实际上是 git
存储库;类似于:
for untracked in $(git ls-files --others)
do
if [ ! -e $untracked/.git ]
then
echo $untracked
fi
done
这将打印不是 git 存储库的未跟踪 files/directories。
Git别名
您可以像这样将其设置为 git 别名:
git config --global alias.untracked-not-repo '!'"bash -c 'for untracked in $(git ls-files --others); do if [ ! -e $untracked/.git ]; then echo $untracked; fi; done'"
现在你可以像
一样使用它了
git untracked-not-repo
在脚本中,我想检查 Git 存储库是否干净。万一它不干净,应该把变化藏起来。对于支票,我使用:
git diff-index HEAD --
找出被跟踪文件的修改并:
git ls-files --others
确定是否存在未跟踪的文件。不幸的是,git ls-files --others
还会报告无法隐藏的未跟踪子模块。
是否有一些选项或不同的 Git 命令 returns 与 git ls-files --other
相同的结果 除了未跟踪的子模块 ?
git
无法查看未跟踪的目录是否应该 成为子模块。它只是一个未跟踪的目录。
您可能会检查 .git
子目录,以检查未跟踪的目录是否实际上是 git
存储库;类似于:
for untracked in $(git ls-files --others)
do
if [ ! -e $untracked/.git ]
then
echo $untracked
fi
done
这将打印不是 git 存储库的未跟踪 files/directories。
Git别名
您可以像这样将其设置为 git 别名:
git config --global alias.untracked-not-repo '!'"bash -c 'for untracked in $(git ls-files --others); do if [ ! -e $untracked/.git ]; then echo $untracked; fi; done'"
现在你可以像
一样使用它了git untracked-not-repo