我的问题是如何纠正我已经添加到索引的文件:git initgit add index.html假设我想在index.html中进行一些更改。怎么做?
该指数不仅仅是 名单 文件,它实际上 包含的副本 文件。这个东西 - 这个索引,或暂存区域,或缓存 - 持有一个副本 一切 文件,除了您特别想要的任何文件 失踪 在提交中。事情是如此重要,以至于它有这三个名字。 (或者,也许,用于它的第一个名字是如此糟糕以至于它增加了几个额外的名字。无论哪种方式它现在都有这三个名字。)
Git将提交存储为快照。每个提交都有一份 所有 您的文件 - 索引中的所有文件,即您运行时的文件 git commit 。它们以特殊的,冻结的/只读的,压缩的,仅Git格式存储。这对于档案来说很好,但对完成工作毫无用处。请记住,接下来的几位。
git commit
当你告诉Git git checkout master ,你告诉Git: 查找由名称标识的提交 master 。将这些文件复制到索引中,然后将它们从索引复制到我的工作树中,以便我可以查看文件并对其进行处理。 在工作树中,文件是正常的。你可以使用它们。您的计算机可以使用它们。您可以 更改 他们,重命名,删除它们,无论你想要什么。
git checkout master
master
当你告诉Git git add somefile ,你告诉Git: 复制文件 somefile 从我的工作树,我可以看到它并在其上工作,进入你的索引,以便它准备好进入下一次提交。 索引中的副本采用特殊的Git格式,但是 - 直到您 承诺 无论如何 - 它不是 冻结的 。只是 准备冻结 。
git add somefile
somefile
当你告诉Git git rm somefile ,你告诉Git: 删除该文件 somefile 从我的索引和我的工作树。 如果你使用 --cached ,如在 git rm --cached somefile ,你告诉Git将它从索引中删除,但不要在工作树中单独使用它。
git rm somefile
--cached
git rm --cached somefile
当你告诉Git git commit ,你告诉Git: 立即获取索引中的所有文件。将它们冻结到新的提交中。 无论指数是什么 然后 那就是你新提交的内容。随你 不 在索引中,那是 不 在你的新提交中。所以你的新提交是一个快照。索引包含 建议下一个快照 。您可以随时随意更改它: git add 将文件复制到其中,替换旧文件或创建新文件,具体取决于之前是否存在其中一个名称。安排 - 或“阶段”,因此名称“临时区域” - 您喜欢的文件,然后使用 git commit 将它们冻结成快照。
git add