问题标签 [git-skip-worktree]

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 投票
7 回答
6815 浏览

git - --skip-worktree 之后无法切换分支

我想做的事

我有一个包含敏感数据的文件,所以我不想将此文件的内容推送到远程服务器。

我做了什么?

为了实现这一点,我在文件为空时进行了提交,并将这个空文件推送到服务器(GitHub)。然后用敏感数据填充文件并应用git update-index --skip-worktree path/to/file。但我没有做出任何承诺。

现在我正在尝试切换我的分支,但我收到了这个错误:

为什么我使用skip-worktree而不是assume-unchanged

我阅读了一些关于这个主题的 SO 问题,并找到了 Borealid 的答案

--assume-unchanged 假定开发人员不应该更改文件。此标志旨在提高 SDK 等不更改文件夹的性能。

--skip-worktree 当您指示 git 不要碰特定文件时很有用,因为开发人员应该更改它。例如,如果上游的主存储库托管了一些生产就绪的配置文件,并且您不想意外提交对这些文件的更改,那么 --skip-worktree 正是您想要的。

在此之后,我找到了Jeff's questionVonC's answer。Jeff 的问题和我的差不多,我遵循了 VonC 的解决方案。但是,这对我不起作用。可能是因为 git 版本不同。因为那个问题来自 2012 年。我们与 VonC 进行了交谈,他说这是一个新问题,因为他不记得答案了。

我尝试将--assume-unchanged--skip-worktree 一起使用,以及软重置工作树。但什么都没有改变。

所以?

你能帮我解决我的问题吗?

谢谢你。

0 投票
2 回答
937 浏览

git - git skip-worktree 在有合并冲突的文件上

我有一个配置文件abc.cfg,其中包含我的环境的本地更改。为了防止将本地配置推送到远程,我git update-index --skip-worktree abc.cfg在文件上使用。

现在上游已经abc.cfg随着我需要的全局更新而改变。所以我首先做了--no-skip-worktree abc.cfg,做git stash了,拉了上游,然后继续处理git stash apply文件。

现在有合并冲突abc.cfg。我试图解决它,然后再做git update-index --skip-worktree abc.cfg一次,但这次它说:

我应该如何应用我的本地更改而不将其包含在提交中?

0 投票
0 回答
274 浏览

git - Git checkout 更改跳过工作树文件

在我的 git repo 中,我的配置文件(在功能和主分支上有所不同)有skip-worktree一点。一切正常,直到我在本地分支上进行了 rebase。这覆盖了我的功能分支上的本地配置文件。

所以我更新了我的功能分支中的配置,但是当我切换分支时,我的主人也出现了同样的变化。所以基本上任何分支中配置文件的任何更改都会在我结帐时在所有分支中更改它们。

我做错了什么,如何确保对配置文件的更改在结帐时不会更改?

0 投票
1 回答
2342 浏览

git - git update-index --skip-worktree 会影响上游仓库吗?

我自己使用 git 已经有一段时间了,现在正在为我们的团队建立一个 repo。我们开发了一个电子商务平台。

有一些目录和文件可以忽略,例如上传目录和环境特定的配置文件。

虽然配置文件位于 .gitignore 上,但我想使用--skip-worktree或忽略上传目录--assume-unchanged

我的问题 - 我找不到明确的答案 - 是否将--assume-unchangedor--skip-worktree位推送到上游仓库?

如果不是,那么确保 git 不会跨存储库的所有实例操纵上传目录的内容的最佳方法是什么?

0 投票
1 回答
3402 浏览

git - 使用 --skip-worktree 从另一个分支处理对文件的更改

在我的机器上,我设置--skip-worktreeconfig/database.yml.

另一位开发人员在处理项目时已提交并合并到开发分支更改config/database.yml

现在,当我这样做时git pull origin develop,我得到

我应该如何处理这样的变化?我应该做

还是有一种不那么老套的方法?

0 投票
1 回答
4292 浏览

git - Git跳过目录及其子目录中所有跟踪文件的工作树

假设我有这个已经被 git 跟踪的工作树。

我想在里面标记每个跟踪的文件,parent以便 git 不再跟踪对它们所做的任何更改,最终将包括somefile.txt, anotherfile.txt, file1.txt, file2.txt, file3.txt.

.gitignore仅适用于未跟踪的文件,所以我使用--skip-worktree.

我试过了:

1.

给了我Ignoring path parent/,但是当我检查时git ls-files -v,它仍然显示我想跳过的文件仍然被跟踪。

2.

它给了我fatal: Unable to mark file parent/child1,因此它无法标记目录及其包含的任何内容。

如果不手动添加我里面的每个文件,我怎么能做到这一点parent

0 投票
2 回答
62 浏览

git - 在由 git hooks 修改的文件上使用 skip-worktree?

我有一个提交后挂钩,可以编辑特定的源文件(具体来说,将提交哈希写入 c# 类中的字符串)。脚本是:

相同的脚本在我的 post-rebase、post merge 等钩子中。它工作正常并且在 git 中显示为已修改,直到我将 GitHash.cs 文件添加到 skip-worktree:

现在该文件根本没有被修改,并且保持在我将它添加到 skip-worktree 时的状态。如果我从跳过工作树中删除它,钩子会再次起作用(文件被修改)。如果我正确理解了skip-worktree,那么当我想在本地修改文件时使用它是可以的,但不想意外提交它们并且不想在我执行git diff 时看到这些文件。但是,它似乎以某种方式阻止了钩子编辑此文件?

所以,如果我想让文件被钩子修改并且不显示在 git diff 上,我该怎么办?

0 投票
0 回答
40 浏览

git - Git 通过文件扩展名在本地忽略文件

我想通过文件扩展名在本地忽略文件。这些文件在 Git 中被跟踪,但在我的机器上经常更新。git 不应再跟踪它们(这样git statusgit add .不会被数百个文件阻塞),但也不应在遥控器上删除它们,就像遥控器.gitignore上的 a 那样。

假设我有一个已经被 git 跟踪的工作树:

如何在所有子文件夹中忽略所有.jpg和文件?.png或者,是否可以忽略所有具有相同名称的子文件夹?(例如所有名为 的子文件夹child)。是文件夹及其所有内容的解决方案。

在我的理解中, 的递归性质git update-index --skip-worktree使得在添加新文件后更新索引是必要的,并且不可能通过文件名忽略*.jpgor **/*.jpg

我在 Windows10 上使用 Git-Bash。

0 投票
2 回答
137 浏览

git - Git 使用更改的 --skip-worktree 文件切换分支

我有一个文件 abc.log (出于某种原因)在 git 中被跟踪,但我(也许愚蠢地)设置为 --skip-worktree 所以对它的更改不会显示在我对存储库的提交中。我想更改分支:

然后我尝试刷新索引并强制结帐:

但是, abc.log 在本地没有任何更改:

Undo git update-index --assume-unchanged <file>之后,我尝试再次将其设置为 no-skip-worktree。

按照https://stackoverflow.com/a/42363882之类的建议,我看到它被 git 跟踪,目前设置为跳过工作树

然而,仅仅寻找它并没有显示它

而且我无法按如下方式添加