我正在建立从已保存的zip文件开发到git的历史记录。我很高兴需要git add .
文件到临时区域,以便提交所选文件。到目前为止一切都很好。
但是我现在只是添加第一个(解压缩的)文件集,提交它们,然后删除它们的目录和内容,然后解压缩下一个集合,添加它们并提交,通常使用变体目录名称。
我的理解问题是,我正在进行“非分期更改”显示(Git Gui)导演/文件我删除了一些提交。我知道git会拍摄当前文件的快照,因此不应该有任何已删除的文件。
那么,我最近的提交是否包含那些已删除文件的副本(在他们的树中)?何时/为什么需要使用git rm
而不是普通rm
(或等效的Windows)?我应该忽略这条消息吗?即是否有关于git如何处理竞争删除的解释&跟踪机制。
答案 0 :(得分:4)
如果您只是使用rm
删除然后提交,那么删除不会被暂存,因此git只会忽略该文件已消失的事实。
如果您希望git识别该文件的删除并相应地更新存储库,则必须git rm
一个文件。在您的情况下,git add -A .
删除旧版本并解压缩后,将为您提供所需内容。它将所有添加,删除和更改添加到暂存区域。
根据您当前的计划,您确实在存储库中有许多您不想要的文件。最好的办法是重新开始,使用以下策略。
git add -A .
git commit
答案 1 :(得分:1)
您猜对了 - 最近的提交包含了这些已删除文件的副本。
尝试git add -A .
,同时删除阶段。
如果你想知道为什么.....因为这是最好使用的临时区域:git有一个“舞台区域”的概念,它允许你只提交部分修改 - 这使分割补丁更容易。