问题标签 [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.
git - 修改文件时,git 中保留了多少个文件版本?
所以我正在阅读第 2 版 Git 版本控制,我偶然发现了这一段(第 51 页,“使用 git add”部分)
存储库中的大多数日常更改可能都是简单的编辑。在任何编辑之后和提交更改之前,运行
git add
以使用文件的绝对最新和最好的版本更新索引。如果不这样做,您将拥有两个不同版本的文件:一个在对象存储中捕获并从索引中引用,另一个在您的工作目录中。
让我感到困惑的是粗体字。因此,假设我做相反的事情,我更改了一个文件,然后git add
在其上运行,现在该文件已暂存。好吧,在我看来,现在我又有了两个不同版本的文件:一个在对象存储中捕获,另一个在我的工作目录中并引用了索引。不同之处仅在于索引现在引用工作目录中的文件,而不是 repo 中的文件。
我在这里错过了作者想要强调的一些见解吗?“git”中可以存在多少个不同版本的文件?“git”也不清楚,但我想这意味着工作目录+对象存储+索引。
git - 如何再次开始跟踪从 git 索引中删除的目录/文件?
使用以下命令,我从 git index 中删除了几个目录:
现在我怎样才能将那些未跟踪的目录再次添加到 git index 中?
git - 如何删除未跟踪的更改但保留索引的更改
在我的 git status 我看到这个
如何将文件重置为当前的暂存更改并仅丢弃非暂存更改。
git - 在 git 中切换分支时保留忽略的文件
Eclipse 有它自己的文件和.project
文件夹。在 git 中,我将它们放在文件中,因为我不希望它们在远程存储库中被跟踪。我的问题是,当我切换分支然后切换回来时,这些文件已被删除,因此 eclipse 无法识别该项目,我必须再次导入它才能生成它们。.classpath
.settings
.gitignore
有没有办法告诉 git 忽略这些文件,但将它们保存在本地 repo 或其他东西中,这样我在切换分支时不会丢失它们,但不会跟踪对它们的更改,也不会将它们推送到远程?
运行时显示文件git ls-files -o
。
我检查了GIT:切换分支时如何保留忽略的文件?,但执行时文件仍然出现git status
。
编辑:
git status
单独显示这一点:
这不起作用:
我也试过这个,但文件出现在git status
:
git - 暂存文件如何在内部修改索引文件?
git index(.git/index) 存储跟踪文件的状态(最后提交状态),它可以通过 git ls-files --stage 显示并git diff
查看索引和工作目录之间的差异。暂存文件的使用如何在git add
内部修改索引文件?
git - 如果我的暂存索引为空,为什么 `git rm` 会删除不存在的文件?
根据git rm
文档,这是它的行为方式:
从索引中删除文件,或者从工作树和索引中删除文件
如果我只是做了一个提交并且我的索引是空的,执行git rm some_file
将分阶段删除some_file
. 我希望rm
什么都不做。为什么要删除一个不存在的文件,对存储库的最终影响是什么?
git - `receive.denyCurrentBranch=updateInstead` 如何与索引交互?
receive.denyCurrentBranch
config 选项控制如果你推送到一个 repo 的 checkout 分支会发生什么。
默认情况下,它会拒绝它(这就是为什么您通常只推送到没有结帐分支的裸仓库)。
可以通过ignore
或禁用它warn
。
另一种选择是updateInstead
。
这样做的作用是,如果HEAD
工作目录和工作目录相同,并且被推送的分支是HEAD
,则工作目录和分支/ 都会HEAD
同时更新。
如果工作目录不同于HEAD
,则拒绝推送。
这对于推送到网络服务器很有用,例如.
我的问题是,这个选项是否与索引交互?
指数更新了吗?如果HEAD
和工作目录匹配,但不匹配怎么Index
办?
git - git - 恢复更新索引/忽略的文件,以便我可以更改分支?
我试图将错误日志添加到我的 .gitignore 文件中,并且在某处读取到在将文件添加到 .gitignore 后我必须专门取消跟踪该文件。不知何故,我最终使用它来这样做:
git update-index --assume-unchanged Logs/Err.log
一切看起来都很好,直到我切换到我的开发分支进行合并。我不能改变分支。我收到以下错误:
您对以下文件的本地更改将被结帐覆盖:Logs/Err.log
然而,当我git status --s
从当前分支运行 a 时,我得到“没有可提交的内容,工作目录干净”
我在某个地方搞砸了。我怎样才能“实际上”忽略该错误日志?如何恢复到以前的非更新索引命令?
git - 忽略文件中的本地更改并在拉取时更新它
我们有一个带有文件的 repo,它说x.APK
是由客户端机器提取的。
这些客户端计算机将修改此文件并将其保存在本地以供使用。
在正常使用中,我们很少会在 2-3 个月内更新此文件。
第一次它会拉出许多文件x.APK
并对其进行修改并将其存储在本地。然后我们更新其他文件并推送。在拉入客户端时,我们得到了本地更改,但由于x.APK
没有更改,因此没有冲突。
现在有什么方法可以更新x.APK
忽略对该文件所做的任何本地更改git pull
。
git pull
由脚本完成,我们无法始终访问客户端。所以运行其他命令会很棘手。
我们尝试了:
这忽略了更改,但无法拉
使用gitignore
它将从客户端和我们不想要的 repo 中删除文件。
如果有人可以提供帮助,那将是一个特殊的案例。
git - 显示在 Git 索引中并在工作副本中更改的文件
我有一个 Git 预提交钩子,它去除空格并将修改后的文件留在工作副本中,这样它就不会踩到像git add -p
.
如果我提交了许多更改中的一个文件,并更正了空白,则我在工作副本中更改了两个文件和一个暂存文件(也在工作副本中,但暂存更改有空白错误):
回购现在看起来像这样:
我可以用:
git diff
看到fileWithBadWS.txt
和unrelatedFile.txt
git diff --cached
查看暂存文件fileWithBadWS.txt
和fileWithGoodWS
.
我怎样才能只看到在工作副本中修改和暂存的文件(即只是fileWithBadWS.txt
)?
注意:这个问题以空格和预提交钩子为例,但更普遍地适用于任何情况,当你有一些文件暂存而一些没有,有一些重叠。