Brian Fitzpatrick Asked: 2018-10-30 10:34:16 +0800 CST2018-10-30 10:34:16 +0800 CST 2018-10-30 10:34:16 +0800 CST 剥离所有应该被忽略的已提交文件的 git repo 772 我最近启动了一个 git repo,忘记添加一个.gitignore文件。在我最初提交之后,我的 repo 有许多子目录和许多本应被忽略的文件。有没有一种有效的方法来添加.gitignore然后将没有文件的回购推送到 GitLab 或 GitHub 等工具? git github 1 个回答 Voted Best Answer Stephen Kitt 2018-10-31T01:10:34+08:002018-10-31T01:10:34+08:00 如果您不介意删除工作目录中所有被忽略的文件,以下将暂存所有已提交但被忽略的文件以供删除: find . -print0 | git check-ignore -z --stdin --no-index | xargs -0 git rm -f -r --cached --ignore-unmatch -- (假设 GNUfind和最近的足够git了git check-ignore)。它还将删除任何其他忽略的文件或目录。 这会列出从当前目录开始的所有文件和目录,检查它们是否被忽略(即使它们已提交),并删除它们,无论它们是否已提交、未跟踪等。 这适用.gitignore于树中的任何文件(甚至您git配置中的其他地方)。 通过提交更改并推送它们来跟进;由于更改是新提交,因此您不需要强制推送任何内容。重写历史以删除所有对假定被忽略的文件的引用是一项稍微复杂的任务。
如果您不介意删除工作目录中所有被忽略的文件,以下将暂存所有已提交但被忽略的文件以供删除:
(假设 GNU
find
和最近的足够git
了git check-ignore
)。它还将删除任何其他忽略的文件或目录。这会列出从当前目录开始的所有文件和目录,检查它们是否被忽略(即使它们已提交),并删除它们,无论它们是否已提交、未跟踪等。
这适用
.gitignore
于树中的任何文件(甚至您git
配置中的其他地方)。通过提交更改并推送它们来跟进;由于更改是新提交,因此您不需要强制推送任何内容。重写历史以删除所有对假定被忽略的文件的引用是一项稍微复杂的任务。