1

我正在从保存的 zip 文件中构建 git 的开发历史记录。我很高兴需要git add .文件到暂存区,以便提交选定的文件。到现在为止还挺好。

但是我现在的情况是简单地添加第一个(解压缩的)文件集,提交它们,然后删除它们的目录和内容,然后解压缩下一组,添加它们并提交,通常使用变体目录名称。

我的理解问题是,我得到了“未暂存的更改”显示(Git Gui)我删除了一些提交的目录/文件。我知道 git 会拍摄当前文件的快照,所以那里不应该有任何已删除的文件。

那么,我最近的提交是否包含那些已删除文件的副本(在他们的树中)?何时/为什么git rm需要使用而不是普通的rm(或 Windows 等价物)?我应该忽略该消息吗?即是否有关于 git 如何处理竞争性删除和跟踪机制的解释。

4

2 回答 2

4

如果您只是通过使用删除rm然后提交,则不会暂存该删除,因此 git 只会忽略该文件已消失的事实。

如果您希望 git 识别该文件的删除并相应地更新存储库,则必须有git rm一个文件。就您而言,git add -A .在删除旧文件并解压缩新文件后,将为您提供所需的内容。它将所有添加、删除和更改添加到暂存区域。

根据您当前的计划,您肯定在存储库中有许多您不想要的文件。您最好的选择是使用以下策略重新开始。

  1. 创建仓库
  2. 解压缩文件
  3. git add -A .
  4. git commit
  5. 删除所有文件
  6. 从 2 开始重复
于 2011-07-28T14:32:51.347 回答
1

你猜对了——最近的提交包含那些已删除文件的副本。

试试看git add -A .,它也分阶段删除。

如果你想知道为什么......因为这是最好使用的暂存区:git 有一个“暂存区”的概念,它只允许您提交部分修改——这使得拆分补丁更容易。

于 2011-07-28T14:27:06.463 回答