问题标签 [git-assume-unchanged]

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 回答
876 浏览

git - git 假设不变和 git stash

我将一些本地配置保存在假设不变的文件中。随着时间的推移,我创建了几个分支,并且假定未更改的文件在两者之间演变(添加更多本地配置)。如果我尝试结帐一个较旧的分支,我会得到:

我不想提交它们并且不能存储它们(即使使用 --include-untracked 选项):

是否有解决方案,或者有更好的本地更改工作流程以保持未提交?

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

git - 如何在将假设未更改的文件保留在 git 中的同时重置我的提交?

我有很多文件设置为

在某些情况下,我的分支搞砸了,并与 origin/master 分歧。比方说

所以我想恢复我的所有提交并保持对 origin/master 的更新,同时保持我假设未更改的文件不被刷新。我怎样才能做到这一点?

0 投票
0 回答
135 浏览

git - git 将文件设置为假设不变

Git 始终设置为assume-unchanged我的两个存储库中的所有文件。在每个commit, checkout, pull, 等等之后,它设置assume-unchanged在修改后的文件上。我必须执行git update-index --no-assume-unchanged my_filecommitpush的修改。

我怎样才能防止这种行为?

0 投票
1 回答
2342 浏览

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

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

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

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

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

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

0 投票
1 回答
45 浏览

ruby - 从 github 拉取文件时如何忽略文件?

我正在使用 Ruby,当我从 Github 中提取时,我想忽略我的配置文件。

我收到的错误是:“错误:您对以下文件的本地更改将被合并覆盖:config/database.yml”

我尝试过的事情:

1)我将文件路径添加到位于我的应用程序根目录中的 .gitignore 中。

2)我将文件路径添加到我的全局 .gitignore

3)我从我的应用程序根目录运行 git update-index --assume-unchanged /config/database.yml

4) 我从应用程序根目录运行 git update-index --skip-worktree config/database.yml

我的计算机上的几个不同文件夹中有同一个应用程序的多个实例。应用程序的其他实例遵循假设不变命令。我不确定我错过了什么。

0 投票
3 回答
2058 浏览

git - git 忽略并取消跟踪远程服务器上的文件夹

我知道类似的问题已被多次询问,但我无法让它适用于我的案例。

我在哪里: 我有一个本地存储库,我推送到实时服务器,其中包括 /content 文件夹及其子文件夹。在制作过程中这没问题,因为我可以对 /content 进行更改并推送它们。但由于这是一个使用 CMS 的网站,所有对 /content 的更改现在都将远程生成。

我想去的地方: 我现在想从代码库中“分离” /content 及其子文件夹,这样我就可以在本地删除庞大的 /content 文件夹,而不会在实时服务器上将其删除。这样我仍然可以对代码进行更改并将它们推送到服务器,而人们可以使用 CMS 在 /content 文件夹中创建文件和更改。

所以到目前为止我做了什么:

  1. 将文件夹添加到 .gitignore:

/content/

  1. 从索引中删除文件夹:

git rm -r --cached content/*

  1. 尝试设置假设不变,以便在推送时不会从实时服务器中删除 /content 中的文件:

git update-index --skip-worktree

当我这样做时,我当然会得到:

致命:无法标记文件

由于文件位于 .gitignore 中,并且它们需要保留在那里,以便将来忽略该文件夹。那我该怎么办?

0 投票
2 回答
1128 浏览

git - 如何在项目中`--assume-unchanged` 文件?

我有配置文件:conf/local.conf我为它运行下一个命令:

在我切换到另一个分支或拉之前没关系。

如何--assume-unchanged在分支之间保留标志?

UPD
即将发生的一些示例:

我希望它像下一个一样工作:

  1. conf/local.conf 被保存
  2. 分支已切换
  3. conf/local.conf 被保存的版本替换
0 投票
1 回答
818 浏览

git - 撤消 git update-index --no-assume-unchanged (不起作用)并能够再次看到这些本地更改

更新:我的权限问题以某种方式任意修复,因为现在完全相同的远程分支创建命令有效,所以(正如您可能猜到的)它不是由这个跟踪问题引起的。

现在我只是想解决跟踪问题。谢谢!

原文:我最初在几个文件中应用了以下内容:

参考本文档:

https://git-scm.com/docs/git-update-index#_using_assume_unchanged_bit

从我的工作目录更改中隐藏某些文件(因为将文件添加到.git/info/exclude似乎没有效果 - 尽管路径正确并且尚未提交,但文件仍然可见)。

然后我遇到了一些推送到以前不存在的远程分支的问题,标准

所以,鉴于我在运行之前没有访问问题update-index,我决定恢复它,--assume-unchanged因为我没有对我的 git repo 做任何其他混乱。

我能够使用查看这些assume-unchanged文件

我试图assume-unchanged通过使用恢复

assume-unchanged如此处关于跨多个文件还原的指示:

撤消 git update-index --assume-unchanged <文件>

这并没有恢复它们,然后我尝试了

根据此建议:

撤消 git update-index --assume-unchanged <文件>

这些文件仍然不可见,我现在也无法通过运行查看它们

我还在我的一个文件上进行了实验性尝试:

按照这里

https://git-scm.com/docs/git-update-index#_skip_worktree_bit

正如我所知skip-worktreeassume-unchanged我希望看到该文件的一些状态变化。依然没有。

如何将文件恢复为可见并在我的工作目录中跟踪更改?

作为一个额外的问题,您知道这可能如何影响我创建新远程分支的访问权限吗?

0 投票
0 回答
28 浏览

eclipse - 在 Git 中标记为假定未更改的文件在哪里?

昨天我在 Git 上苦苦挣扎,因为我在 Git Bash 或 Eclipse Git-tool 中都找不到我想要提交的任何 .java 文件。我四处搜索,发现我在项目中接触过的所有文件都标记为“假定未更改”。(在昨天之前从未听说过)。我试图 --un-assume-unchanged 作为 Git Bash 中的命令和 Eclipse 中的 conext-menu 中的命令。(在 SO 上找到了这个答案)。但所有文件仍被标记为假设不变。

我试过 Git 重置,删除整个本地存储库并再次克隆,同样的问题。

Git是如何工作的,标记为假定不变的字段是在文件中列出的还是什么?除了在 Git Bash 中列出它们之外,是否可以通过其他方式取消标记它们?或者您对如何解决我的问题有其他想法?(我已经单独保存了我更改的文件,以便我可以重置或删除 repo)

我不确定这是否有问题,但我的机器上有 2 个 repo 副本,以及 2 个单独的 Eclipse 工作区。