问题标签 [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 update-index --assume-unchanged file”实际上将这些信息保存到哪里?
我喜欢直接修改配置文件(如 .gitignore 和 .git/config),而不是记住任意命令,但我不知道 Git 将传递给“git update-index --assume-unchanged 文件”的文件引用存储在哪里”。
如果你知道,请告诉!
git - 谁动了我的 git 假设不变位?
我的仓库中有一个文件,我已将假设不变位设置为:
偶尔,在对 repo 进行一些工作后,该位未设置,文件自动assume-unchanged
不再存在。
谁在摸它?在我明确告诉 git 之前,我怎样才能使它永久化:
这里发生了什么?
编辑:我在本地更改的配置文件上使用了假设不变位,并且永远不应该提交,更不用说向上游推送了。我不想在 中看到它们git status
,也不想在其他任何地方看到它们,除非我明确告诉 git 我想编辑并提交其中一个。
编辑:好的,我想我设法重现了这个问题。
我从另一个 repo 提交了文件(它没有作为--assume-unchanged
),拉到我的 repo 上,果然,这个位被重置了。
于是出现了两个问题:
- 是否可以在中央权威回购上设置此位,以便它传播到所有回购?
- 即使在远程更改之后,是否有可能使这个有点粘?
git - 如何在不暂存的情况下 git 添加新文件?
为了有效地(并且按照预期)使用 git,我进行了小的原子提交,而我确实有更长的会话,我不仅改变了一件事。因此,我大量使用git add -p
. 但是,这不适用于全新的文件,因为我以后往往会忘记它们。
我想要做的是,告诉有git
一个新文件,我希望它跟踪,但不暂存它:
示例:运行git status
产生:
如果我foo
在 C 部分有一个文件,我说git add foo
它将转到 A 部分。如果我说git add -N foo
它将同时发送到 A 和 B。但是,这意味着它将包含在下一次提交中,至少因为有一个新文件这一事实。
我希望它专门放在 B 部分,这样我以后可以用git add -p
or git add foo
(或其他)将它添加到 A 中。
编辑
关于add -N
解决方案,这不起作用,因为如果我在说了之后尝试提交add -N
并且没有正确添加它,git会抱怨,因为它不知道如何处理空文件:
git - 获取“阶段”的 Git 概念
当它适用于 Git 时,我仍然很难理解 staging 的概念。
可以用 SVN 做任何类比吗?在 Git 中设置阶段级别的主要目的是什么?
git - Git:git如何记住每个分支的索引?
例如,我在 repo 中创建文件 a(假设我在 master 分支上),然后我git add a
和git commit
. 之后我git branch copy
和git checkout copy
. 最后我在 word 目录中创建文件 b 然后git add b
。
当我结帐回到主分支时,Git 似乎很聪明,并且git ls-files
文件 b 没有列出。
所以我很困惑,因为我们index
在一个 repo 中只有一个文件,git 如何同时为分支维护不同的暂存区域?
编辑:
如何解释暂存但未提交的文件,每个分支仍会记住?
git - Git 暂存区只是一个索引吗?
Pro Git一书说暂存区只是一个列表或索引,它说明了当agit commit
完成时将提交哪些文件,现在这个名字index
更常被称为“暂存区”。
但是,如果我们修改foo.txt
已经是 repo 一部分的文件,并使用git add foo.txt
它来暂存它,然后再次修改文件,那么现在文件既是“暂存”又是“修改”(如 中所示git status
),如果我们提交, “分阶段”版本将进入提交。第二次编辑不会进入。
那么,如果“暂存区”只是一个索引——文件列表,那么它如何跟踪第一次编辑是什么?
git - 在预提交挂钩中测试将要提交的内容
挂钩运行时pre-commit
,存储库可能不干净。因此,如果您天真地运行您的测试,它们将不会与您正在提交的内容相冲突,而是与您的工作树中发生的任何事情相冲突。
显而易见的事情是git stash --keep-index --include-untracked
在开头pre-commit
和git pop
结尾处。这样您就可以针对(纯)索引进行测试,这正是我们想要的。
git add --patch
不幸的是,如果您使用(特别是如果您编辑大块),这会生成合并冲突标记,因为stash@{0}
提交后的内容可能与工作树不匹配。
另一种常见的解决方案是克隆存储库并在新的临时存储库中运行测试。这样做有两个问题:
- 我们还没有提交,所以我们不能轻易地获得我们将要提交的状态的存储库的副本;和
- 我的测试可能对当前工作目录的位置很敏感,例如由于本地环境配置。
git stash --keep-index --include-untracked
如何在不引入合并冲突标记且不修改 post-commit 的情况下将我的工作树恢复到它之前的任何状态HEAD
?
git - 我跑了 git update-index --assume-unchanged 现在想要获取文件列表?
我暂时想为某个提交删除一些文件并运行:git update-index --assume-unchanged file_name
在一堆文件上。
然后我关闭了终端,是否有办法取回我运行git update-index
命令的文件的名称,以便我可以--not-assume-unchanged
在它们上运行?
git - 如何撤消 git update-index?
我只是做了以下操作来在我的本地主机和我的生产环境中保留我的 config.php 文件的不同副本:
不幸的是,我没有完全按照我应该的方式编写 config.php 文件,我需要将其反转,以便我可以进行更改、提交它,然后重新忽略该文件。
如何撤消git update-index
命令?
git - git checkout 在 --assume-unchanged 文件上抛出错误
git update-index --assume-unchanged path/to/file
在特定分支上运行后,我无法使用git checkout
.
它抛出以下错误:
错误:您对以下文件的本地更改将被结帐覆盖:
请在切换分支之前提交您的更改或存储它们。
中止
但是git diff
&都git status
告诉我没有区别 & 没有什么可以提交/存储的。
如何切换出分支?
有没有更好的选择git update-index --assume-unchanged
(除了.gitignore
,因为我不希望它被忽略)?(与问题 2 相同 @ git update-index --no-assume-unchanged 不起作用)