我正在将此添加到.gitignore文件中
.idea/*
Run Code Online (Sandbox Code Playgroud)
但无论如何,状态是:
# modified: .gitignore
# modified: .idea/.generators
# modified: .idea/dovezu.iml
# modified: .idea/misc.xml
# modified: .idea/workspace.xml
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么 ?我甚至将.idea/*添加到全局〜/ .gitignore_global 但git状态,无论如何向我显示:
# modified: .gitignore
# modified: .idea/.generators
# modified: .idea/dovezu.iml
# modified: .idea/misc.xml
# modified: .idea/workspace.xml
Run Code Online (Sandbox Code Playgroud)
maa*_*cls 356
您.gitignore正在工作,但它仍然跟踪文件,因为它们已经在索引中.
要阻止这种情况,你必须这样做: git rm -r --cached .idea/
当您提交.idea/目录时,将从您的git存储库中删除该目录,以下提交将忽略该.idea/目录.
PS:您可以使用.idea/而不是.idea/*忽略目录.您可以在.gitignore手册页上找到有关模式的更多信息.
从有用的报价git-rm手册页
--cached
Use this option to unstage and remove paths only from the index.
Working tree files, whether modified or not, will be left alone.
Run Code Online (Sandbox Code Playgroud)
小智 32
使用git rm --cached *file*对我来说效果不佳(我知道这个问题已经有 8 年历史了,但它仍然显示在该主题搜索的顶部),它确实从索引中删除了该文件,但它也从遥控器。
我不知道为什么会这样。我想要的只是保持我的本地配置隔离(否则我必须在每次提交之前注释本地主机基本 URL),而不是删除与配置等效的远程配置。
阅读更多内容我发现似乎是执行此操作的正确方法,也是完成我需要的操作的唯一方法,尽管它确实需要更多关注,尤其是在合并期间。
无论如何,它所需要的只是git update-index --assume-unchanged *path/to/file*。
据我了解,这是最值得注意的事情:
如果 Git 需要修改索引中的此文件,例如合并提交时,它会(优雅地)失败;因此,如果假定的未跟踪文件在上游发生更改,您将需要手动处理这种情况。
小智 25
对于可能仍在搜索此问题的人,仅查看此页面.
这样做,瞧,它将被分类.
- git rm -r --cached.
- git add -A
- git commit -m'删除被忽略的文件'
first命令将从索引中删除所有文件
第二个命令将添加除gitignore中提到的文件之外的所有文件
last命令将再次提交您的文件并删除您希望git忽略的文件,但将它们保存在本地目录中.
注意:在Windows的第3步中使用"删除被忽略的文件".
Ser*_*ndt 10
update-index --skip-worktree忽略配置文件的具体git选项是:
$ git update-index --skip-worktree <filepath>
Run Code Online (Sandbox Code Playgroud)
请注意,无需向 中添加任何内容 .gitignore。
要取消此操作,例如当配置文件的通用结构发生更改时:
$ git update-index --no-skip-worktree <filepath>
Run Code Online (Sandbox Code Playgroud)
--skip-worktree用于指示git不要将文件更改索引到特定文件。这可能是因为开发人员通常需要在本地更改文件才能测试项目。例如,如果上游主存储库托管一个生产就绪的配置文件,则应防止对该文件的意外提交更改。
而--assume-unchanged假设开发人员永远不应该更改该文件。此标志仅用于提高git软件开发工具包 (SDK) 组件等永不更改的文件夹的性能。
这里和其他地方提供的解决方案对我来说不起作用,所以我将添加到未来读者的讨论中。诚然,我还没有完全理解该过程,但终于解决了我的(类似)问题并想分享。
在 Windows 10 上的 IntelliJ IDEA 中使用 git 时,我不小心缓存了一些包含数百个文件的文档目录,将它们添加到.gitignore(并且可能稍微移动它们)后,我无法将它们从默认更改列表中删除。
我首先提交了我所做的实际更改,然后着手解决这个问题 - 花了我太长时间。我尝试过git rm -r --cached .,但总是会遇到错误,有不同的以及和标志path-spec的变化。path-spec-f-r
git status仍然会显示文件名,所以我尝试逐字使用其中一些文件名git rm -cached,但没有运气。存储和取消存储更改似乎有效,但一段时间后它们再次排队(我对确切的时间范围有点模糊)。我终于删除了这些条目以便更好地使用
git reset
Run Code Online (Sandbox Code Playgroud)
我认为当您没有实际想要提交的暂存/缓存更改时,这只是一个好主意。
小智 5
这将允许您删除缓存的索引文件,然后仅添加您需要的文件,包括对 .gitignore 文件的更改。
- git rm -r --cached 。
- git 添加 .
- git commit -m '删除忽略的文件'
这些操作可实现以下目的:
步骤1:此命令将清除所有缓存文件的索引。
步骤 2:此命令将添加除 gitignore 列表中的文件之外的所有文件。
步骤 3:通过使用此命令,您可以删除您希望 git 忽略的文件,同时将它们保留在本地目录中并重新提交您的文件。
| 归档时间: |
|
| 查看次数: |
71758 次 |
| 最近记录: |