Fel*_*xyz 221 git version-control
我有一个git存储库,它只用于保存几个项目中使用的图形和声音文件.它们都在没有子目录的一个目录中.现在我刚创建了一个脚本,用于将这些资产从另一个结构化目录复制,具有多个子目录级别.
现在我只想通过git跟踪(源)分层文件结构,并且应该忽略(目标)平面目录(包含一堆中的所有文件).
我已将目标目录添加到.gitignore,但git仍在跟踪其中的更改.我想如果我提交删除目标目录中的旧文件,git可能会停止跟踪新内容(由脚本复制),但事实并非如此.
如何让git忘记目标目录?
Gor*_*son 516
此命令将导致git取消跟踪您的目录及其下的所有文件,而不实际删除它们:
git rm -r --cached <your directory>
该-r
选项会导致删除目录下的所有文件.
该--cached
选项导致文件只从git的索引中删除,而不是从工作副本中删除.默认情况下git rm <file>
会删除<file>
.
jon*_*one 75
如果您需要有一个跟踪文件(已签入),但不希望跟踪文件的进一步更改,同时将其保留在本地存储库以及远程存储库中,则可以通过以下方式完成:
git update-index --assume-unchanged path/to/file.txt
Run Code Online (Sandbox Code Playgroud)
之后,对此文件的任何更改都将不再显示git status
.
TL;DR 清理你的 git 存储库并确保所有被忽略的项目确实被忽略:
git rm -r --cached .
git add .
git commit -m "Clean up ignored files"
Run Code Online (Sandbox Code Playgroud)
注意:您不需要指定目录,这样您就可以清理整个远程存储库。
要进一步阅读此内容