git add 添加被忽略的文件

2024-01-10

我正在尝试从 git 中删除以前跟踪的目录,这可以工作,但它会在后续的每个目录中添加回来git add ., git add -A等等。这是我所做的:

添加到项目根目录中的.gitignore:

node_modules

运行以下命令:

git rm -r --cached node_modules
git commit -a -m "removed node_modules"
git push origin master

到目前为止一切顺利,这将从远程存储库中删除该目录。问题是当我稍后运行时git status它告诉我 node_modules 目录未被跟踪,并在将来的提交中不断将其添加回来。

我错过了什么和/或如何找到问题的根源?

From here http://git-scm.com/docs/git-add:

git add 命令默认不会添加被忽略的文件。 ... git add 命令可用于通过 -f(强制)选项添加忽略的文件。

来自评论的附加信息:

我正在跟踪 .gitignore 文件。

git check-ignore node_modules/按预期返回 node_modules/ 。

不使用子模块。

Update:

我创建了一个示例,该示例似乎按照上述步骤复制了该问题:

https://github.com/awhitehouse104/SampleRepo https://github.com/awhitehouse104/SampleRepo

解决:

总结下面的答案和评论,问题出在我的 .gitignore 文件的编码中。我曾经用过echo 'node_modules' > .gitignore在 Windows 8 上创建该文件,它以带有 BOM 的 UTF-16 形式出现(根据下面的答案)。经过几次谷歌搜索后,这似乎是 powershell 的默认编码,我可以确认保存为 UTF-8 似乎已经解决了问题。

tldr;可能不使用这种创建 .gitignore 文件的方法或准备更改编码

echo 'node_modules' > .gitignore


您可能有一个否定规则(再次包含规则,以!) 在你的.gitignore文件在某处之后node_modules line.

git check-ignore文档中有错误/含糊之处。你期望如果git check-ignore node_modules/ prints node_modules/, then node_modules/被忽略。但实际上,如果该路径名与任何忽略模式匹配(正数或负数),它就会打印该路径名。唯一确定的方法是使用-v (--verbose) 选项,这将使git check-ignore打印匹配的图案。
此外,如果git check-ignore -v说忽略某个目录,并不一定意味着该目录中的所有文件都被忽略。示例仓库:

/
    .git/
    .gitignore
    node_modules/
        bar
        foo
$ cat .gitignore 
/node_modules/*
!/node_modules/foo

$ git check-ignore -v node_modules/
.gitignore:1:/node_modules/*    node_modules/
             ^ positive pattern => ignored

$ git check-ignore -v node_modules/foo
.gitignore:2:!/node_modules/foo node_modules/foo
             ^ negative pattern => not ignored

$ git add -A

$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   new file:   node_modules/foo
#

So if git check-ignore -v node_modules/ says node_modules/被忽略,做git add -A node_modules/然后运行git check-ignore -v --no-index针对添加的各个文件,以找出添加它们的原因。


Update:我没想到的是:你的.gitignore文件采用“UTF-16 with BOM(字节顺序标记)”编码:

$ cat .gitignore | hexdump -vC
00000000  ff fe 6e 00 6f 00 64 00  65 00 5f 00 6d 00 6f 00  |..n.o.d.e._.m.o.|
00000010  64 00 75 00 6c 00 65 00  73 00 0d 00 0a 00        |d.u.l.e.s.....|

这就是为什么 git 可能无法处理它。将文件保存为无 BOM 的 UTF-8 格式,这应该可以解决问题。但我也建议提交一份错误报告git check-ignore- 在这个极端情况下,它的输出显然与 git 实际忽略的内容不一致。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

git add 添加被忽略的文件 的相关文章

  • Git:如何使外部存储库和嵌入式存储库作为通用/独立存储库工作?

    我有一个大项目 比方说A repo 其中有一个子文件夹来自B repo 当我提交时 我会遇到如下警告A repo warning adding embedded git repository extractor annotator serv
  • Git 命令显示我对给定远程的权限

    同事可以从远程存储库获取数据 但不能推送到远程存储库 我怀疑他对遥控器只有读权限而没有写权限 我可以通过多种方法来检查这一点 但我想不出他可以在 git 中使用的方法 是否有 git 命令可以显示给定远程存储库的权限 No Git 本身不处
  • 具有单独 work_tree 的 Git 子模块

    我按照本页上的教程使通过 Git 部署我的网站变得简单 http toroid org ams git website howto http toroid org ams git website howto 到目前为止一切都很好 但是我最近
  • 如何修复树与树之间的 Git 错误断开链接?

    我的事务被中断 当我再次尝试时 我遇到了空或损坏的对象错误 在另一个问题之后 我删除了所有空文件 当我运行时 git fsck full 我收到这个错误 Checking object directories 100 256 256 don
  • git 可以与 Xcode 集成吗?

    有没有办法将 git 存储库与 Xcode 内置的 SCM 功能一起使用 Xcode 4 原生支持 git WWDC 2010 上的开发者工具国情咨文演讲 在这里了解更多 Xcode 4 中的新增功能 http developer appl
  • 使用 TFS 个人访问令牌克隆 Git 存储库

    我正在尝试以编程方式克隆 git 存储库 我的 ASP NET MVC 应用程序正在创建并启动一个进程 处理进程的代码工作正常 但是当尝试使用本地 TFS PAT 克隆 git 存储库时 身份验证失败 我无法使用 NTLM 或要求用户输入凭
  • Git:如何变基到特定提交?

    我想变基到特定的提交 而不是另一个分支的 HEAD A B C master D topic to A B C master D topic 代替 A B C master D topic 我怎样才能做到这一点 您可以通过在您喜欢的提交上创
  • refname 不明确且拉取失败

    我运行了以下命令 因为我想将生产分支移回而不必先签出 git branch f production HEAD 1 现在 当我检查生产时 我收到以下警告 warning refname production is ambiguous 然后我
  • 如何使用交互式变基将提交编辑为未提交?

    我想使用交互式变基来编辑以前的提交 但是当我进入该提交的编辑模式时 所有文件都已提交 我知道我可以进行更改并修改提交 但我希望所有更改最初都未提交 暂存或以其他方式 这样我就可以对其进行编辑 就像在最初提交之前一样 这可能吗 Imagine
  • git pull,忽略深度,如何不拉取整个历史记录?

    我们有一个巨大的多 GB git 存储库 主要是二进制对象 克隆需要几天时间 实际的主分支 没有历史记录 只有大约 20MB 所以我想 深度为 1 的 git 克隆就是解决办法 然而 现在我需要将某人的更新拉到主服务器 我们没有分支 当我拉
  • git Push over sshfs 失败,并显示“关闭 sha1 文件时出错:错误的文件描述符”

    我们使用 sshfs 通过 SSH 安装文件系统 并将其用作 git 存储库协作的远程存储 Mac OSX 10 6 6 到 RHEL 3 服务器 SSHFS 版本 2 2 MacFUSE SSHFS 2 2 0 MacFUSE 库版本 F
  • 如何正确使用“mvn release:prepare”?

    我尝试了这个命令 用dryrun在我的 Maven 项目上进行测试 mvn release clean release prepare DdryRun true DgenerateBackupPoms false Dtag solocal
  • Git:发送电子邮件而不提交

    我有一个项目 我做了更改 并想使用 git send email 功能将它们发送给另一个用户 我发现它可以通过发送补丁来工作 由git format patch每次提交 是否可以只发送diff的 我不想先提交 然后发送补丁 是否有gitfo
  • 第一次使用node.js - “ReferenceError:节点未定义”

    我刚刚安装了node js 我尝试编写应该检查版本的node v 但它不起作用 这是输出 gt node v ReferenceError node is not defined at repl 1 2 at REPLServer self
  • 默认情况下 git merge -Xignore-space-change

    我该如何设置该选项ignore space change对于所有合并使用git config 我也许可以使用别名merge 但因为我希望该设置应用于git stash pop git stash apply git pull and git
  • Ansible bitbucket 克隆存储库配置 ssh 错误

    我之前发布过这个问题 但那里的答案不再有效 总之 当使用 Ansible 配置我的 vagrant box 时 在尝试使用 ssh 克隆我的 bitbucket 私有存储库时 我遇到了一个神秘的错误 该错误指出 权限被拒绝 公钥 然而 如果
  • 在 Azure DevOps 项目之间移动存储库时保留拉取请求

    我在同一帐户内有两个 Azure DevOps 项目 我想将存储库从一个项目移动到另一个项目 这一页探索如何在具有完全保真历史记录的团队项目之间移动 git 存储库 https learn microsoft com en us azure
  • apt-get 无法在 ubuntu dockerfile 中工作

    我对 docker 相当陌生 正在尝试通过编写自己的镜像来学习 并且目前正在阅读 Docker 的实际操作 ISBN 1633430235 在我自己的代码和书中的示例 第 146 页 中 我想通过 dockerfile 安装 git My
  • 如何在 macOS 上将 Git 升级到最新版本?

    我刚刚购买了一台装有 OS X Lion 的新 Mac 我在终端中检查了默认安装的 git 版本 我得到了答案 git version gt git version 1 7 5 4 我想将 git 升级到最新版本 1 7 8 3 因此我下载
  • 当 .gitattributes 中的 EOL 设置为 CRLF 时,Git diff 认为行结尾为 LF

    当我恢复对带有 Windows 行结尾的文件的更改并且 gitattributes 将 EOL 定义为 CRLF 时 git 认为行结尾已更改为 LR 即使十六进制编辑器显示 CRLF 仅当 gitattributes 定义 EOL 字符时

随机推荐

  • Apache Web 服务器不允许我刷新 /about 但在 localhost 上工作正常

    我捆绑了我的一个项目 效果很好 但是 当在路由 about 上点击刷新时 它会显示请求的 URL about 在此服务器上未找到 但是 当我在 Web 服务器上的本地主机上执行此操作时 它在刷新和前进 后退按钮上工作正常 我正在使用 Rea
  • 即使服务器收到成功消息,也无法在我的设备中接收 GCM 消息

    我从 gcm 收到了作为对 Web 服务器 本地主机 的响应的成功消息 但设备未收到该消息 请帮忙 下面是我使用的代码 主要活动 package vitpat placement import java io IOException imp
  • SWT:获取系统设备更改的通知(USB 设备连接/断开)

    我正在编写一个 SWT 应用程序 该应用程序需要位于系统托盘中 并在用户连接某些 USB 设备时自动弹出 该应用程序用作其控制面板 在本机环境 在本例中为 win32 但我最终应该与平台无关 中执行此操作的方法是侦听 WM DEVICECH
  • 在 Django 视图中向 Postgres 添加用户/帐户表

    前往编辑2 在views py中调用以下adduser函数 我首先保存用户 因为它的 id 由 Django 在 INSERT 时自动创建 是帐户和密码的主 外键 添加用户似乎工作正常 但是当它到达时Accounts user u 抛出以下
  • 可以在不更改键盘语言的情况下为文本框设置拼写检查语言吗?

    我正在使用 C 和 Net 4 0 并且希望在不更改键盘布局的情况下为文本框设置不同的拼写检查语言 我通过阅读此处的精彩帖子发现可以更改 InputLanguage CurrentInputLanguage 来更改文本框的拼写检查语言 但这
  • 使用git作为集中版本服务器

    我目前在工作中使用svn 我们的设置是 每个人都有一个工作副本 并且我们致力于由 apache2 提供服务的 svn 服务器 所以我提交了更改 其他更新 每个人都可以按照自己的意愿处理副本 所以部署起来非常容易 但现在 我想做同样的事情 但
  • 从不同订阅下创建的映像创建 Azure VM

    有没有办法备份虚拟机 按照 sysprep 方法捕获图像 然后使图库中的该图像对其订阅下的人员可见 例如 我创建一个虚拟机 将其存档到图像库 然后我的同事出现并想要从该图像创建一个虚拟机 该同事不能是我的订阅的共同管理员 或者 是否有一种方
  • UICollectionViewFlowLayout 不使用整体框架

    我最近开始使用 UICollectionView 对 UICollectionViewFlowLayout 有点困惑 集合视图中每个单元格的框架似乎是在每个项目之间的间距相等的情况下计算的 这会导致某些单元格的帧具有分数位置 这会导致标签模
  • 如何对 find 的输出执行“for every”?

    我想找到所有mp41920x1080 的文件 If I do find type f name mp4 exec ffprobe 2 gt 1 它会找到所有mp4文件并显示视频信息 例如 输出将包含 以及其他行 Input 0 mov mp
  • Fortran 90 中双精度的最大数组大小是多少?

    抱歉 如果这不是做这个问题的正确位置 这不是关于编程的问题 而是一个技术问题 我需要处理大量双精度二维向量数组 大约有 1000 万个 但是 在其他程序中 我在处理这种数组时遇到了内存问题 我的问题是双精度数组大小是否有某种限制 我在 Li
  • jquery select2如何使选择后不关闭

    使用 多值选择框 时http ivaynberg github io select2 http ivaynberg github io select2 每次选择后选择框都会回落 有没有办法不这样做 以便用户可以选择其中的几个而不需要额外单击
  • 如何在 C# 中以管理员模式启动进程[重复]

    这个问题在这里已经有答案了 我有一个 Visual Studio Windows 应用程序项目 我添加了代码来下载安装程序更新文件 下载完成后 安装程序需要管理员权限才能运行 我添加了一个清单文件 当用户单击 DownloadUpdate
  • 如何在新创建的 .NET Core 2.0 Web 应用程序中以 .NET Standard 2.0 为目标?

    我刚刚使用创建了一个新项目dotnet new web 我的 Google foo 可能让我失望 但我没有找到与我的答案相关的任何内容 如果我错过了一些明显的东西 请链接到另一个 SO 答案或相关文档 如果我想确保这个新项目符合 NET S
  • 有没有一种简单的方法可以在 VB.NET 中随机化列表?

    我有一个类型列表System IO FileInfo 我想随机化列表 我想我记得看到过类似的东西list randomize 不久前 但我找不到我在哪里见过的 我第一次涉足这个领域 得到了这个函数 Private Shared Sub Ge
  • 从 Firebase 数据库读取和显示数据

    我正在尝试从 firebase 数据库检索数据并将数据存储在我在课堂上定义的课程数组中 到目前为止我已经得到 import AngularFireDatabase AngularFireList from angularfire2 data
  • 如何将 dataframe-js 导入 Google App 脚本?

    我使用http链接导入包 var d3Url https gmousse github io dataframe js dist dataframe js eval UrlFetchApp fetch d3Url getContentTex
  • 使用 GUI -OR- adb 命令从模拟器中提取文件时出现问题

    我正在 Eclipse Win7x64 中开发我的第一个 Android 应用程序 但在提取 SQLite 文件来检查其中的内容时遇到问题 我使用 DDMS GUI 来拉取时看到了这个问题 这似乎有些已知 2011 03 01 20 15
  • 不可清除的页面

    我遇到如下内核崩溃 在这里我可以观察到不可修复页面中存在大量内存 我想知道内存何时被添加到不可清除的页面列表中 另外 从下面的消息我可以了解到系统中只有 1724kB 可用 这是对的吗 kswapd0 page allocation fai
  • 如何在多模块构建中禁用根聚合模块的打包和发布任务?

    我有一个多项目 SBT 项目 它看起来像 SBT 文档上的示例 import sbt import Keys object HelloBuild extends Build lazy val root Project id hello ba
  • git add 添加被忽略的文件

    我正在尝试从 git 中删除以前跟踪的目录 这可以工作 但它会在后续的每个目录中添加回来git add git add A等等 这是我所做的 添加到项目根目录中的 gitignore node modules 运行以下命令 git rm r