问题标签 [git-index]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
44 浏览

git - 修改文件时,git 中保留了多少个文件版本?

所以我正在阅读第 2 版 Git 版本控制,我偶然发现了这一段(第 51 页,“使用 git add”部分

存储库中的大多数日常更改可能都是简单的编辑。在任何编辑之后和提交更改之前,运行git add以使用文件的绝对最新和最好的版本更新索引。如果不这样做,您将拥有两个不同版本的文件:一个在对象存储中捕获并从索引中引用,另一个在您的工作目录中。

让我感到困惑的是粗体字。因此,假设我做相反的事情,我更改了一个文件,然后git add在其上运行,现在该文件已暂存。好吧,在我看来,现在我又有了两个不同版本的文件:一个在对象存储中捕获,另一个在我的工作目录中并引用了索引。不同之处仅在于索引现在引用工作目录中的文件,而不是 repo 中的文件。

我在这里错过了作者想要强调的一些见解吗?“git”中可以存在多少个不同版本的文件?“git”也不清楚,但我想这意味着工作目录+对象存储+索引。

0 投票
1 回答
2057 浏览

git - 如何再次开始跟踪从 git 索引中删除的目录/文件?

使用以下命令,我从 git index 中删除了几个目录:

现在我怎样才能将那些未跟踪的目录再次添加到 git index 中?

0 投票
1 回答
37 浏览

git - 如何删除未跟踪的更改但保留索引的更改

在我的 git status 我看到这个

如何将文件重置为当前的暂存更改并仅丢弃非暂存更改。

0 投票
1 回答
1360 浏览

git - 在 git 中切换分支时保留忽略的文件

Eclipse 有它自己的文件和.project文件夹。在 git 中,我将它们放在文件中,因为我不希望它们在远程存储库中被跟踪。我的问题是,当我切换分支然后切换回来时,这些文件已被删除,因此 eclipse 无法识别该项目,我必须再次导入它才能生成它们。.classpath.settings.gitignore

有没有办法告诉 git 忽略这些文件,但将它们保存在本地 repo 或其他东西中,这样我在切换分支时不会丢失它们,但不会跟踪对它们的更改,也不会将它们推送到远程?

运行时显示文件git ls-files -o

我检查了GIT:切换分支时如何保留忽略的文件?,但执行时文件仍然出现git status

编辑:

git status单独显示这一点:

这不起作用:

我也试过这个,但文件出现在git status

0 投票
0 回答
28 浏览

git - 暂存文件如何在内部修改索引文件?

git index(.git/index) 存储跟踪文件的状态(最后提交状态),它可以通过 git ls-files --stage 显示并git diff查看索引和工作目录之间的差异。暂存文件的使用如何在git add内部修改索引文件?

0 投票
1 回答
68 浏览

git - 如果我的暂存索引为空,为什么 `git rm` 会删除不存在的文件?

根据git rm文档,这是它的行为方式:

从索引中删除文件,或者从工作树和索引中删除文件

如果我只是做了一个提交并且我的索引是空的,执行git rm some_file将分阶段删除some_file. 我希望rm什么都不做。为什么要删除一个不存在的文件,对存储库的最终影响是什么?

0 投票
1 回答
5455 浏览

git - `receive.denyCurrentBranch=updateInstead` 如何与索引交互?

receive.denyCurrentBranch config 选项控制如果你推送到一个 repo 的 checkout 分支会发生什么。

默认情况下,它会拒绝它(这就是为什么您通常只推送到没有结帐分支的裸仓库)。

可以通过ignore或禁用它warn

另一种选择是updateInstead

这样做的作用是,如果HEAD工作目录和工作目录相同,并且被推送的分支是HEAD,则工作目录和分支/ 都会HEAD同时更新。

如果工作目录不同于HEAD,则拒绝推送。
这对于推送到网络服务器很有用,例如.

我的问题是,这个选项是否与索引交互?

指数更新了吗?如果HEAD和工作目录匹配,但不匹配怎么Index办?

0 投票
2 回答
981 浏览

git - git - 恢复更新索引/忽略的文件,以便我可以更改分支?

我试图将错误日志添加到我的 .gitignore 文件中,并且在某处读取到在将文件添加到 .gitignore 后我必须专门取消跟踪该文件。不知何故,我最终使用它来这样做:

git update-index --assume-unchanged Logs/Err.log

一切看起来都很好,直到我切换到我的开发分支进行合并。我不能改变分支。我收到以下错误:

您对以下文件的本地更改将被结帐覆盖:Logs/Err.log

然而,当我git status --s从当前分支运行 a 时,我得到“没有可提交的内容,工作目录干净”

我在某个地方搞砸了。我怎样才能“实际上”忽略该错误日志?如何恢复到以前的非更新索引命令?

0 投票
1 回答
382 浏览

git - 忽略文件中的本地更改并在拉取时更新它

我们有一个带有文件的 repo,它说x.APK是由客户端机器提取的。
这些客户端计算机将修改此文件并将其保存在本地以供使用。

在正常使用中,我们很少会在 2-3 个月内更新此文件。
第一次它会拉出许多文件x.APK并对其进行修改并将其存储在本地。然后我们更新其他文件并推送。在拉入客户端时,我们得到了本地更改,但由于x.APK没有更改,因此没有冲突。
现在有什么方法可以更新x.APK忽略对该文件所做的任何本地更改git pull

git pull由脚本完成,我们无法始终访问客户端。所以运行其他命令会很棘手。

我们尝试了:

这忽略了更改,但无法拉

使用gitignore它将从客户端和我们不想要的 repo 中删除文件。

如果有人可以提供帮助,那将是一个特殊的案例。

0 投票
2 回答
583 浏览

git - 显示在 Git 索引中并在工作副本中更改的文件

我有一个 Git 预提交钩子,它去除空格并将修改后的文件留在工作副本中,这样它就不会踩到像git add -p.

如果我提交了许多更改中的一个文件,并更正了空白,则我在工作副本中更改了两个文件和一个暂存文件(也在工作副本中,但暂存更改有空白错误):

回购现在看起来像这样:

我可以用:

  • git diff看到fileWithBadWS.txtunrelatedFile.txt
  • git diff --cached查看暂存文件fileWithBadWS.txtfileWithGoodWS.

我怎样才能看到在工作副本中修改和暂存的文件(即只是fileWithBadWS.txt)?

注意:这个问题以空格和预提交钩子为例,但更普遍地适用于任何情况,当你有一些文件暂存而一些没有,有一些重叠。