我一直在bitbucket上使用我的仓库工作了一段时间,并且我在本地工作了一些文件。我已经删除了一些文件(刚从linux中使用过rm),使用-am" message"进行了提交,然后推送到掌握。
现在我去了我的仓库,我看到仓库中存在一些文件而不是本地文件。
如何告诉我的git存储库删除任何本地不存在的文件?
答案 0 :(得分:1)
现在我去了我的仓库,我看到仓库中存在一些文件而不是本地文件。
文件存储在您的git存储库中但它们不是您最近的代码(workdir)的一部分。
如果你想从git中完全删除它们(从历史记录中),你必须清理存储库并删除它们。
为此,您可以使用format-patch
或使用this tool。
如何告诉我的git存储库删除任何本地不存在的文件?
一旦git跟踪您要删除的文件,您必须先将其从缓存中删除(索引)。
log
要删除哪些文件?您需要有一个要删除的文件列表。如果您知道文件或使用脚本生成文件,则可以手动完成。
有几种方法。 (git log --cc --stat
,BitmapImage
等)
以下是有关如何查看已提交文件(git> 2.5)
的示例bitmap.CreateOptions = BitmapCreateOptions.IgnoreImageCache
答案 1 :(得分:0)
这些文件永远保留在早期版本中,但不应该在最后一次修订中。您只能重新创建存储库。
答案 2 :(得分:0)
提交-am“message”
即使您没有完成git rm,提交-a也足以获取这些已删除的文件:
告诉命令自动暂存已修改和删除的文件,但是没有告诉Git的新文件不会受到影响。
这意味着git push
推动了这些删除。尝试并在其他地方再次克隆您的repo,以查看这些文件在HEAD中不再可见。
答案 3 :(得分:0)
如果您使用rm
删除了这些文件,则这些文件应显示在已删除的git status
下的Changes not staged for commit:
中。如果这是正确的,您可以执行git rm <file>
或git add <file>
,然后提交。别担心,两者的效果在您的情况下是相同的。这将从工作目录的索引中删除文件。
当您rm
文件时,git知道您当前的工作目录中缺少该文件,但它不会停止跟踪该文件。您必须将此更改添加到缓存(或暂存区域),然后提交更改。 git rm
与rm
文件具有相同的效果,然后git add
与文件相同。如果文件存在于工作目录中,git rm
也会删除它,否则它不会失败。
请注意,这不会从存储库中删除文件,因此如果文件是敏感文件(例如私钥或密码),则应按照here所述从所有对象中删除该文件。