簡體   English   中英

如何從目錄中刪除除未版本控制的 git 文件之外的所有文件?

[英]How to remove all but the unversioned git files from a directory?

我想把很多文件放在一個存儲庫中。 但是,它們的大小超過 10GB。 它們是很多文件。 總存儲空間約為 13GB。

我正在考慮解決這個問題的方法。 現在我正在考慮創建一個單獨的存儲庫,我可以在其中推送其余文件。 但是因為有很多文件,手動操作太繁瑣了。

有什么方法可以查看哪些文件沒有添加到 git 中(也許它們被稱為未版本控制的文件)? 然后刪除所有未添加的文件。 然后在同一個文件夾中初始化一個新的 repo 並將其余的推送到另一個存儲庫。

請讓我知道這是否可行。 如果存在,我願意在 git 周圍使用 shell 或 python 包裝器。

這些文件彼此無關,因此將它們保存在兩個單獨的存儲庫中並不是什么大問題。

要查找尚未提交的文件:

git status --porcelain --untracked-files --ignored

這將向您顯示所有更改的文件路徑,包括.gitignore文件路徑,以及下降到目錄中的文件路徑。 如果您的 repo 中沒有掛起的更改,這應該只是未跟蹤/忽略的文件。 行的開頭會有 3 個字符,例如?? 或者!! 代表你可以剝離的狀態| cut -c 4- | cut -c 4-除非你想解析它們以區分不同的狀態。

從那里 - 將這些文件移動到不同的目錄會更容易(而不是移動所有其他文件)。

列出所有跟蹤的文件

git ls-tree --full-tree -r --name-only HEAD

刪除所有跟蹤的文件:

git ls-tree --full-tree -r --name-only HEAD |
  xargs git rm

我的方法是純粹使用 Git:

git status # Make sure you don’t have any change in already tracking files
cat .gitignore # If you ignore some files that you want to actually index, modify this file
git add . # Adding all untracked files
git commit # Take note of this commit hash, abcde123
cd ../another_new_repo
git init 
git fetch ../old_repo
git cherry-pick abcde123

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM