Git 阿普肖特
对于当前提交中但不在索引中的文件,请调用它们以将其暂存删除Git 阿普肖特,git,version-control,repository,Git,Version Control,Repository,对于当前提交中但不在索引中的文件,请调用它们以将其暂存删除 分别:对于索引和/或工作树中的每个文件,将准备冻结的索引副本与工作树副本进行比较。如果这两个人匹配,什么也别说。如果它们不匹配,请说些什么:说这个文件不是为了提交而暂存的 如果有文件在索引中,但不在工作树中,git status会将它们标记为“已删除” 如果有文件在工作树中,但不在索引中。。。这就是.gitignore的用武之地。git status命令通常会抱怨这些文件未被跟踪。这毕竟是未跟踪文件的定义:它是工作树中的文件,但不在索引
git status
会将它们标记为“已删除”
如果有文件在工作树中,但不在索引中。。。这就是.gitignore
的用武之地。git status
命令通常会抱怨这些文件未被跟踪。这毕竟是未跟踪文件的定义:它是工作树中的文件,但不在索引中*.o
或*.pyc
或\uuuuupycache\uuuuuu/
,告诉Git:不要再谈论这些未跟踪的文件了。它还有一个重要而有用的副作用,那就是告诉Git:如果我对一个装满文件的整个文件夹进行了大量添加,如果这些文件不在索引中,就不要将它们添加到索引中。这意味着您通常只需git add.
即可添加所有内容:如果需要,将更新已跟踪的文件,并跟踪未被特别忽略的任何新文件
您只需将整个文件夹中的文件移动(或复制)到您的工作树中。这些文件当前不在索引中,因此它们都将被取消跟踪。您只需将它们添加到索引中即可。不会有以前的版本,现有的提交无法更改,因为它们一直处于冻结状态,但它们将出现在您进行的下一次提交中,并从那时起继续出现在每次提交中,直到您从索引中显式删除它们为止
在您的情况下,如果满是新文件的文件夹中有一些不应跟踪的文件,您可能需要使用git status
查看哪些文件现在被列为未跟踪。如果其中一些应该保持未跟踪状态,您可以在.gitignore
文件中列出它们。然后可以执行git添加文件夹
操作。如果git status
,则通过显示以下内容来总结它们:
Untracked files:
...
folder/
您可以运行
git status-uall
让git显示所有文件名,而不是将它们汇总到文件夹名中。什么是“将文件放在适当的位置”?回到git跟踪的工作目录树?否则,当前复制目录中的所有git命令都会出错。或者我应该在这个未跟踪的文件夹中执行git init。您在某处有一个git存储库,例如在/home/me/src/foo/
中,其中有一个.git/
。只需将其他文件复制到那里:cp-r/path/to/files/home/me/src/foo/new
。创建一个包含所有文件副本的new/
文件夹。这在Git存储库中的工作树中。所有这些文件现在都未被追踪。这个怎么样?我将所有文件从断开连接的工作文件夹(xyz/)移到foo/。然后我将一个新(旧)集克隆到该文件夹(xyz/)中。然后我将所有内容从foo/复制回来,用.git替换当前存在的同名文件(在xyz/中)。复制的文件现在会被git跟踪吗?复制的文件现在将位于git让您使用的工作树中。文件是否在Git的索引中(在.Git/index
文件中)取决于Git先前签出到该工作树中的提交是否包含这些文件。同样,模型是:Git的文件是.Git
,采用Git-ish格式,您无法控制。Git让你可以随意处理你的工作树,这是你的普通电脑格式。在此工作树中,您可以随时执行任何操作。然后您可以告诉Git:请使用Git status
和/或Git add
查看我的工作树。您可以随时对工作树中的任何文件执行任何操作。吉特不在乎。然后告诉Git:将您存储的内容与我的工作树进行比较(Git status
),或者:从您存储的内容覆盖我的工作树中的内容(Git reset--hard
),或者:将我的工作树中的内容复制回您存储的内容(Git add
)。还有一些类似的命令,但总的来说,这个想法是:你的工作树是你的折叠,纺锤,或毁伤,无论你想要什么。只需将.git/*
操作留给git本身即可。