Git:切换分支时保留忽略的文件

2024-04-25

我知道这看起来像是重复的GIT:切换分支时如何保留被忽略的文件? https://stackoverflow.com/questions/15552959/git-how-to-keep-ignored-files-when-switching-branches,但我在那里找不到答案。

所以我创建了一个新分支--orphan标志,删除提交历史记录。然后我做了git rm --cached对所有文件进行修改.gitignore忽略其中一些,然后添加并提交。正如预期的那样,被忽略的文件不在新存储库中(也不在其任何历史记录中)。但是,当我切换分支时(即,当我签出旧分支,然后再次签出新分支时),它们就会消失。我怎样才能避免这种情况?

编辑:整个操作的目的是准备一个要在 GitHub 上发布的项目,所以我想隐藏一些包含密码、密钥等私人信息的配置文件。这就是为什么我通过创建一个新的孤儿来删除提交历史记录分支。我知道可能在将文件添加到之前提交文件.gitignore将解决消失的问题,但这将使这些文件最终在公共历史中可见。我尝试做git add -f, then git rm --cached,但这并不能解决问题。


但是,当我切换分支时(即,当我签出旧分支,然后再次签出新分支时),它们就会消失。我怎样才能避免这种情况?

你不能。这是设计使然。在你的publish分支,您没有跟踪文件,并且您有.gitignore对于他们来说。伟大的!但是当你切换到其他分支时does跟踪这些文件后,它们将被签出到您的工作目录。这是因为一个.gitignore仅适用于未跟踪的文件。

From 文档 https://www.kernel.org/pub/software/scm/git/docs/gitignore.html:

gitignore 文件指定 Git 应忽略的有意未跟踪的文件。已被 Git 跟踪的文件不受影响。

现在,如果您尝试切换回您的publish分支,这些文件将被从磁盘上删除,因为它们不存在于该分支中。你的.gitignore这些文件被忽略,因为它们被跟踪并且不适用于它们。

(请注意,根据定义,它们是被跟踪的即使它们位于您要离开的分支中。这主要只是一个实现细节,我承认这可能不直观。)

您想要做的是删除这些文件的所有出现在所有分支机构。使用类似的工具BFG 回购清理器 https://rtyley.github.io/bfg-repo-cleaner/从您的历史记录中删除这些文件完全地,在所有分支机构。然后你就可以安全地.gitignore他们,然后一旦他们走了完全地您可以安全地将其推送到 GitHub。

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

Git:切换分支时保留忽略的文件 的相关文章

  • 如何修复 git 中的“警告:忽略名称损坏的引用”?

    我正在 OSX 上工作 在特定的存储库中 每当我在输入 git 命令后按 Tab 键自动完成 git diff clicks tab 我现在看到大量警告 warning ignoring ref with broken name refs
  • 切换 git 分支时如何处理 vim 缓冲区?

    因此 我在 vim 缓冲区中打开了大量文件 并且正在使用 git 处理功能分支 突然 我意识到我需要恢复到主分支来进行快速修复 提交后 我将 vim 会话保持打开状态并切换回 master 分支 但是 当我尝试从缓冲区加载我需要的文件时 我
  • 如何在 git 中使用 --work-tree 选项?我不断收到错误消息

    我有一个普通的存储库 其中有一个工作树和一个与工作树位于同一目录中的 git 文件夹 我正在尝试使用以下命令从该位置外部运行 git 命令 git git dir path to repo git work tree path to rep
  • 如何避免获取 .repo/manifest.xml?

    如何避免获取 repo manifest xml 故意修改的 我不想在回购同步期间对其进行修改 我已经做了一个repo init 这一步就完成了 我对manifest xml做了一个小修改 删除了一些同步不需要的项目 当我们进行存储库同步时
  • jenkins构建完成后如何将更改推送到github?

    我有一个 jenkins 作业 它从 github 克隆存储库 然后运行 powershell 脚本来增加文件中的版本号 我现在正在尝试将该更新文件发布回 github 上的原始存储库 因此当开发人员提取更改时 他会获得最新的版本号 我尝试
  • 如何在 github 中拉取请求时忽略或排除文件

    我们有 4 个分支 1 dev 2 qa 3 staging 4 master 我们要更新并添加1 dev中的CODEOWNERS文件中的一些人 2 qa到4 master的CODEOWNER文件将被保留 因为 1 dev 有 4 个审稿人
  • git:显示所有已修改的文件 - 已暂存和未暂存

    我需要一个命令给我所有修改过的文件 这包括暂存 即新添加的文件 和非暂存更改 在普通列表我可以在脚本中使用它 虽然这个问题可能听起来很熟悉 但我只找到接近我想要做的命令 git ls files m 列出 非分阶段 修改但忽略了上演的和新的
  • CodeCommit 错误 Elastic Beanstalk (AWS)

    运行后 pip install upgrade awsebcli 尝试执行以下操作时出现以下错误 eb deploy 无法将代码推送到 CodeCommit 存储库 错误 CommandError 处理 git 命令时发生错误 错误代码 1
  • git rebase 开发分支

    抱歉 只是另一个 变基 问题 但我对此感到困惑 我有时会将开发分支上的提交推送到远程 原始 现在 关于 rebase 总是提到的一件事是 如果您推送了更改 则永远不要 rebase 这意味着 我永远无法重新调整我的开发分支 只能合并它 在功
  • 如何通过pygit2获取当前签出的Git分支名称?

    这个问题应该与 如何获取Git中当前的分支名称 https stackoverflow com questions 6245570 how to get current branch name in git 获取 git 当前分支 标签名称
  • 预提交钩子 git 错误

    我正在尝试在 python 中执行预提交 git hook 以检查文件的行长度是否小于 80 个字符 但是我收到没有此类文件 目录的错误 我在 fedora 上并设置了 usr bin python help 将不胜感激 usr bin e
  • 如何将/ff分支提升到HEAD

    我有一个受保护的分支 只有在集成构建上的集成构建通过后 才应提升 快进该分支 我目前尝试通过在集成分支的拉取请求上构建集成来解决这个问题 一旦成功 只需将发布分支快速转发到集成分支的尖端 但是 当我在 TFS 构建系统上构建分支时 它将检出
  • 为不同分支部署GitLab页面

    我正在使用 GitLab Pages 部署我的 React 应用程序 并且运行良好 这是我的gitlab ci yml Using the node alpine image to build the React app image nod
  • 通过 Git/SVN 将前缀 ? 添加到代码中

    怎么加前缀 v VersionNumber使用 Git SVN 高效地访问存储库中的每个文件 我发现 SO 使用这种做法为其存储库中的每个特定文件提供版本号 他们使用SVN 我想知道如何使用 Git 做同样的事情 举几个例子 1 2 在你的
  • Capistrano 3 运行每个命令两次(新安装)- 配置问题

    我刚刚完成第一次 Capistrano 安装 大部分内容都保留为默认设置 我配置了我的服务器 其身份验证 远程文件夹以及对 git 存储库的访问 我使用 capistrano 将 php 代码部署到我的服务器 上限分期部署 and 上限生产
  • git merge 中“递归合并模式”旁边的这些符号是什么?

    当我使用git pull project name master为了更新我的核心文件 我在 递归合并 下得到了一堆绿色的加号和红色的减号信号 这些符号是什么以及它们的含义是什么 这是一个屏幕截图 感谢您的帮助 这是已更改的行数的近似值 优点
  • 使用 GIT_PS1_SHOWCOLORHINTS 自定义 __git_ps1 的颜色

    我尝试过的 我已更新我的提示以包含分支名称 git ps1 另外 我设置GIT PS1 SHOWCOLORHINTS 问题 提示正确显示 然而 树枝的颜色始终是绿色的 我预计肮脏的树枝会是红色的 文档指出 颜色基于 git status s
  • 将生成的文件存储在 Git 中

    我们有一个相当大且过于混乱的代码库 我们希望使用 Git 进行迁移 目前 它是一个大的整体块 不能轻易地分割成更小的独立组件 该代码构建了大量共享库 但它们的源代码如此交错 目前无法将其干净地分离到单独的存储库中 我不太关心 Git 是否可
  • 如何调试 Jenkins 作业中无法运行程序“C:\Program Files\Git”?

    我正在使用 jenkins 构建我的 git 项目 这是我在查看日志时收到的错误 我在 jenkins 中使用 git 插件 您将如何解决该错误消息 Started by user anonymous Building in workspa
  • git log over 使用 --follow 时限制输出? [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 在以下服务

随机推荐

  • Nodejs mongodb驱动的同步函数调用

    我有一个处理 mongodb 数据库的开源项目 我正在尝试创建一个查询数据库以检查条目是否存在的函数 问题是当if exists 返回 true 或 false 它会返回 undefined 因为 mongodb 驱动程序函数是异步的 该文
  • 将 pdf 文件转换为 tiff 文件的最佳方法 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • intellij 是否可以像在 Eclipse 中一样组织导入?

    我正在开发一个项目 所有团队成员都使用 Eclipse 而我是唯一的 IDEA 用户 这会因导入重新排列而产生大量噪音 eclipse导入的顺序是 Java Javax Org Com 其他一切按字母顺序排列 是否可以配置 IDEA 来遵循
  • 使用 Tkinter/Python 使用 ImageTk.PhotoImage 调整图像大小

    我正在尝试使用 Tkinter 制作幻灯片 但在调整图像大小时遇到 问题 它们仅显示为默认尺寸 而我想让它们全部统一 我可以使用 Image open 和调整大小来对单个图像执行此操作 但我无法弄清楚如何让它在迭代中工作 我将不胜感激的帮助
  • 为了让 WCF 传递大字符串,在哪里增加 maxStringContentLength ?

    好的 我已经设置并测试了一个不错的小型 WCF 服务 客户端创建一个字符串并将其传递给服务上的方法 然后服务将其保存为文件 与少量的测试数据完美配合 但是当我尝试它应该做的事情时 传递一些序列化的 net 对象 它崩溃了 并出现错误 格式化
  • 在 PHP 中打印货币数字格式

    我的页面中要显示一些价格值 我正在编写一个函数 它接受浮动价格并返回带有货币代码的格式化货币 val 例如 fnPrice 1001 01 应该打印 1 000 01 最简单的答案是number format http www php ne
  • 伊斯坦布尔封面报告对于摩卡测试是错误的(使用 Mongoose)

    我已经尝试在伊斯坦布尔为我的申请进行封面测试 一切似乎都工作正常 但有些方法被标记为未涵盖 并且我确信 由于日志 这些功能已被涵盖 这是我想测试的代码 使用 Mongoose var mongoose require mongoose Sc
  • 使用 PHPExcel 将 Excel 中的单元格按行和列合并在一起

    我需要使用以下命令按行合并 Excel xlsx 中的单元格并再次按列合并PHPExcel http phpexcel codeplex com downloads get 212184 我尝试了以下方法 sheet gt mergeCel
  • 字符串数组上的 VBA“类型不匹配:需要数组或用户定义的类型”

    我有一个全局声明的动态字符串 DMA 数组 Dim DMAs As String 我 ReDim 数组并在 CreateArrayOf 函数中为其赋值 该函数的类型为 String 返回 String 类型的数组 DMAs CreateAr
  • 我如何告诉 matplotlib 我已经完成了绘图?

    下面的代码绘制了两个后记 http en wikipedia org wiki PostScript ps 文件 但第二个文件包含这两行 import matplotlib import matplotlib pyplot as plt i
  • Android:更新后重新启动应用程序 - ACTION_PACKAGE_REPLACED

    我的应用程序不在 Play 商店中 请在网络上验证是否有新版本并下载并启动它 安装后我想重新启动应用程序并使用BroadcastRecevier with ACTION PACKAGE REPLACED 这是代码 播送 public voi
  • 分支输出 Keras

    我的模型分为 2 个输出层 如下所示 输入 gt L1 gt L2 gt L3 gt 输出1 输入 gt L1 gt L2 gt L3 gt 输出2 我这样使用它是因为我想要out1 and out2有2个不同的激活函数 因此 我创建了一个
  • D 中的特征可以用于类型类吗?

    我是 D 新手 我正在寻找一种使用类似 Haskell 的类型类进行编程的好方法 例如D 中的函子 幺半群等 Tango 或 Phobos 中是否实现了类似的功能 我听说过可以对某些属性进行编译时类型检查的特征 它们可以用于类型类吗 我尝试
  • 如何使用 git format-patch 将提交压缩到一个补丁中?

    我在一个分支上有 8 个提交 我想通过电子邮件发送给一些尚未了解 git 的人 到目前为止 我所做的一切要么给我 8 个补丁文件 要么开始为分支历史记录中的每个提交提供补丁文件 从一开始 我使用 git rebase interactive
  • 浏览器选项卡存储?

    是否有一个浏览器存储只能由创建它的页面使用 我正在制作一个 TamperMonkey 脚本来自动化我的工作 当打开来自特定域的页面时会触发它 然后 它会在所述页面中找到特定链接 同一域 并在同一选项卡中将其打开 如果新打开的页面符合条件 则
  • 在 numpy 中快速找到对称对

    from itertools import product import pandas as pd df pd DataFrame from records product range 10 range 10 df df sample 90
  • PaintComponent() 正在其他组件上绘图

    我正在使用基于中的代码的自定义类这个答案 https stackoverflow com a 16909994 5686799 绘制一个形状像讲话泡泡的背景 每当我将应用程序的窗口大小调整到足以使组件在顶部或底部突出时 该组件的轮廓就会绘制
  • 有没有办法通过 PowerShell 检测声音?

    我想检测电脑是否正在播放任何类型的声音 如果它没有播放任何类型的声音 我可以在 Powershell 中使用其他条件并执行下一步需要执行的操作 那么有没有办法通过 PowerShell 来检测声音呢 Thanks 方法一 Import Mo
  • 如何声明二维数组?

    创建二维数组的最简单方法是什么 我希望能够做类似的事情 declare int d 0 m 0 n 您还可以通过指定数组的索引来创建关联数组或类似 哈希表 的数组 array array 0 gt array name gt John Do
  • Git:切换分支时保留忽略的文件

    我知道这看起来像是重复的GIT 切换分支时如何保留被忽略的文件 https stackoverflow com questions 15552959 git how to keep ignored files when switching