删除文件没有git删除。现在它在回购中,而不是本地。如何从回购中删除?

时间:2016-01-18 03:57:50

标签: git github

我一直在bitbucket上使用我的仓库工作了一段时间,并且我在本地工作了一些文件。我已经删除了一些文件(刚从linux中使用过rm),使用-am" message"进行了提交,然后推送到掌握。

现在我去了我的仓库,我看到仓库中存在一些文件而不是本地文件。

如何告诉我的git存储库删除任何本地不存在的文件?

4 个答案:

答案 0 :(得分:1)

  

现在我去了我的仓库,我看到仓库中存在一些文件而不是本地文件。

文件存储在您的git存储库中它们不是您最近的代码(workdir)的一部分。

如果你想从git中完全删除它们(从历史记录中),你必须清理存储库并删除它们。

为此,您可以使用format-patch或使用this tool

enter image description here

  

如何告诉我的git存储库删除任何本地不存在的文件?

一旦git跟踪您要删除的文件,您必须先将其从缓存中删除(索引)。

log

要删除哪些文件?您需要有一个要删除的文件列表。如果您知道文件或使用脚本生成文件,则可以手动完成。

如何获取要删除的文件列表?

有几种方法。 (git log --cc --stat BitmapImage等)

以下是有关如何查看已提交文件(git> 2.5)

的示例
bitmap.CreateOptions = BitmapCreateOptions.IgnoreImageCache

enter image description here

答案 1 :(得分:0)

这些文件永远保留在早期版本中,但不应该在最后一次修订中。您只能重新创建存储库。

答案 2 :(得分:0)

  

提交-am“message”

即使您没有完成git rm,提交-a也足以获取这些已删除的文件:

git commit man page

  

告诉命令自动暂存已修改和删除的文件,但是没有告诉Git的新文件不会受到影响。

这意味着git push推动了这些删除。尝试并在其他地方再次克隆您的repo,以查看这些文件在HEAD中不再可见。

答案 3 :(得分:0)

如果您使用rm删除了这些文件,则这些文件应显示在已删除的git status下的Changes not staged for commit:中。如果这是正确的,您可以执行git rm <file>git add <file>,然后提交。别担心,两者的效果在您的情况下是相同的。这将从工作目录的索引中删除文件。

当您rm文件时,git知道您当前的工作目录中缺少该文件,但它不会停止跟踪该文件。您必须将此更改添加到缓存(或暂存区域),然后提交更改。 git rmrm文件具有相同的效果,然后git add与文件相同。如果文件存在于工作目录中,git rm也会删除它,否则它不会失败。

请注意,这不会从存储库中删除文件,因此如果文件是敏感文件(例如私钥或密码),则应按照here所述从所有对象中删除该文件。