GIT 是否可以仅在一个分支中跟踪文件,而不能在其他分支中跟踪文件?

2024-01-04

我使用 GitFlow 作为 git 工作流程。我为电子微控制器编程。

当我在开发分支时,我不需要跟踪或提交已编译的 HEX 文件,我只需要代码。但是当我在发布或主分支上时,我确实需要提交生成的十六进制文件。

目前,我“在精神上”忽略了 HEX 文件,只在需要时才暂存并提交它。但这有点麻烦,把它放在那里,总是看着你,问“为什么所有其他文件,但不是我”......
我感到有点内疚,并且我不想在那里看到它,除非我在适当的分支上。

有什么建议吗?


没有什么好方法可以做你想做的事。我还建议您重新检查一些假设,因为当您说“...当我在 [某个分支] 时,我确实需要生成的[任何东西]...”(强调),这告诉我您可能不会让您的源代码控制系统只是一个源代码控制系统。

仅仅说“保持不同”的问题.gitignore在每个分支上”是,(1)它没有考虑到您将定期创建需要的分支这一事实not忽略HEX文件,来自需要忽略HEX文件的分支; (2) 版本之一.gitignore将被视为对另一个的修改,因此例程合并可能会默默地将更改转移到不应获取它的分支中。

您可以使用 gitflow 提供的结构来使其更易于管理,特别是如果您围绕分支和合并活动编写脚本release分支机构。你可以将十六进制文件保存在你的.gitignore,但在每个上暂存第一次提交时强制添加它release分支。这里有几个关键点:

1) All .gitignore确实是说,如果存在与某些路径模式匹配的未跟踪文件,这些文件应该默认情况下保持未被追踪。一旦一个文件is跟踪,.gitignore没有进一步的影响。

2)如点(!)中所使用的,“跟踪”仅意味着“在索引中”。如果文件正在提交A但不在提交中B,然后在提交之间移动A and B通常会更新索引,以便文件在每次签出时相应地被跟踪或未跟踪。但这确实会产生一个问题...

2a) 如果你在develop,其中 HEX 文件是.gitignored,但你的工作树中有一个未跟踪的 HEX 文件;然后你git checkout master (where master does有一个 HEX 文件),git 会忽略你未跟踪的 HEX 文件并允许签出,导致你的本地版本被覆盖。您将无法恢复 HEX 文件。再说一遍,既然你说文件已生成,这可能没什么大不了的;但这是需要记住的事情。

3) 您可以使用以下命令覆盖保持被忽略的文件不被跟踪的默认行为-f的选项git add, as in

git add -f path/to/HEX/file

如果您遵循 gitflow 合并模式,那么您可以在每次创建时简单地执行此强制添加release分支,覆盖忽略规则release分支机构(以及master,它由来自的合并组成release分支机构)。到目前为止,一切都很好。

当然,这些合并到发布确实会带来问题,因为每次他们都会看到新的 HEX 文件与旧的文件冲突(因为据 git 所知,它们是独立创建的。本质上,你想要的是默认合并策略的“theirs”选项的行为(如果存在冲突,则从我要合并的分支中获取版本)。您可能不想使用该选项except对于那个文件;你可以使用.gitattributes maybe.

如果你这样做的话也会有一个问题hotfix分支,因为它们是从master(所以他们会有十六进制文件)但你将它们合并到两者master and develop。因此每个修补程序都有将 HEX 文件“泄漏”到系统中的风险develop分支(之后您必须再次删除它才能使忽略规则发挥作用)。

如果这看起来很麻烦,确实如此。同样,在我看来,这是因为您正在违背源代码控制工具的原则。需要澄清的是,这些问题并不是我提出的解决方案所特有的,而是会随着any问题的解决方案如所述。如果 git 发现该文件在每个发布分支上弹出,但在开发或功能分支上不存在,则合并到 masterwill冲突和修补程序will复制文件进行开发是有风险的,无论您是如何到达那里的。

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

GIT 是否可以仅在一个分支中跟踪文件,而不能在其他分支中跟踪文件? 的相关文章

  • git 预提交钩子格式代码 - Intellij/Android Studio

    本要点展示了如何在预提交时使用 Eclipse 格式化程序自动格式化 Java 代码 Source https gist github com ktoso 708972 https gist github com ktoso 708972
  • 无法使用 git 配置文件进行 ssh

    我知道它被问了很多次 但我无法得到我的问题的答案 我正在尝试使用配置文件 ssh 到系统 配置文件是 Host qa HostName 10 218 70 345 User user IdentityFile C Users bean ss
  • 分支明显不同,但提交历史是相同的

    git status告诉我我的分支和我在另一个存储库上开始的分支已经分歧 On branch master Your branch and origin master have diverged and have 13 and 13 dif
  • git pull,忽略深度,如何不拉取整个历史记录?

    我们有一个巨大的多 GB git 存储库 主要是二进制对象 克隆需要几天时间 实际的主分支 没有历史记录 只有大约 20MB 所以我想 深度为 1 的 git 克隆就是解决办法 然而 现在我需要将某人的更新拉到主服务器 我们没有分支 当我拉
  • 在 github 上的 fork 中跟踪上游的最佳实践

    摘要 对于要维护一组本地更改的上游存储库 处理长期运行跟踪的最佳实践是什么 我想让 github 上的 fork 与上游保持同步 但仍然允许清晰跟踪 fork 特有的更改 对于本次讨论 假设upstream指向主项目存储库并且origin指
  • 哪个是更智能的 git 协议,ssh 或 git(通过 ssh)或 https 协议?

    哪个高效 SSH 或 Git 文件压缩 我对 Git 的理解是 git 协议很智能 因为通信两端都有一个协议代理来压缩文件传输 从而通过有效地使用网络带宽来实现更快的克隆 From 我发现了以下说法 For secure authentic
  • git 匹配多个单词的标签

    我们可以得到最后一个 git 标签 它以一个单词 例如 TEST 开头 如下所示 git describe tag dirty match TEST 我想知道如何获得最后一个以 word1 开头的标签orword2 例如测试OR跑步 我尝试
  • git 别名中的 AWK 语句

    我正在尝试创建一个 git 别名来以特定格式打印日志中的所有拉取请求 但是 我在使用 AWK 删除双空格时遇到问题 这是使用以下命令的 git log 的输出 git log merges grep pull request pretty
  • 我可以直接从我的谷歌云端硬盘在线推送/拉取吗?

    有一些方法可以通过谷歌驱动器同步 Windows 应用程序将我的本地 git 存储库同步到我的谷歌驱动器 但我想知道我是否可以完全绕过它的需要 Fro eg git remote add origin https drive google
  • 在 Azure DevOps 项目之间移动存储库时保留拉取请求

    我在同一帐户内有两个 Azure DevOps 项目 我想将存储库从一个项目移动到另一个项目 这一页探索如何在具有完全保真历史记录的团队项目之间移动 git 存储库 https learn microsoft com en us azure
  • Netbeans 和 Git,.obj 文件被忽略

    我正在开发一个涉及 obj 文件的小型 git 项目 当我查看 项目选项卡 时 我发现它们被忽略了 但如果我查看我的 gitignore 我无法理解为什么 DepthPeeling nbproject private DepthPeelin
  • 如何在 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 字符时
  • 创建一个空分支?

    我有一个包含项目的 git 存储库 我现在要对这个项目进行大规模的修改 如何为这次大修创建一个空白的新分支 然后当完成时 如何将这个分支切换到master 使用 checkout orphan 命令 git checkout orphan
  • git 提交错误:检测到大文件

    您好 我正在为 ios 8 1 开发一个应用程序 xcode 我已经使用 googleMaps 框架来实现自动完成功能 当我尝试在 Git 中推送我的项目时 我收到大文件检测错误 后来尝试使用 git lfs 并跟踪 git 检测到的文件
  • 当当前分支上有未提交的更改时签出另一个分支

    大多数时候 当我尝试签出另一个现有分支时 如果我在当前分支上有一些未提交的更改 Git 会不允许我这样做 所以我必须首先提交或隐藏这些更改 然而 有时 Git 确实允许我在不提交或存储这些更改的情况下签出另一个分支 并且它会将这些更改携带到
  • Git 提交失败:“请使用 -m 或 -F 选项提供消息。”

    当我键入 git commit 命令来提交文件时 我收到以下错误消息 Microsoft Visual Studio 微软 找不到命令 错误 核心编辑器 Microsoft Visual Studio 存在问题 请使用 m 或 F 选项提供
  • Git 在哪里存储标签?

    Git 在哪里存储标签 我执行 git tag v0 1 0 v0 10 0 v0 11 0 但目录 git refs tags是空的 Git 将这些标签存储在哪里 谢谢 它们也可以存储在 git packed refs
  • git reflog 和 log 有什么区别?

    手册页说 log 显示提交日志 reflog 管理 reflog 信息 reflog 信息到底是什么 它有哪些日志没有的信息 日志看起来更详细 git log显示当前的 HEAD 及其祖先 也就是说 它打印提交 HEAD 指向的提交 然后打
  • Git 更改丢失 - 为什么?

    我们的开发团队正在使用 git 最近我们至少两次丢失了文件更改 我们正在使用私人 Github 存储库 在当前情况下 我们可以返回 Github 上的日志并查看我对文件所做的一些更新 后来 另一位团队成员更改了文件的不同部分 它似乎破坏了我

随机推荐

  • 在预提交中运行 ESLint 不会因警告而停止

    我正在向我的项目添加一些预提交和预推送脚本 我使用 Husky 因为它会在 git 上跟踪任何更改 在我的 package json 上我有 precommit npm run lint npm run test 当任何测试或 lint 时
  • 如何在 Linux 或 Macos 中编译适用于 Windows 的静态 .lib 库

    我正在寻找在 Linux 或 Macos 中编译 Windows 静态库的方法 似乎有交叉编译器可以为 Windows 生成 a 库 例如this one https stackoverflow com questions 4624078
  • Tailwind CSS:隐藏一个div并将其替换为另一个

    我想做的是 当有人将鼠标悬停在图像 div 上时 中间标题将被隐藏并替换为我想要显示的一些文本 我已经尝试了 100 种方法来实现这一目标 但从未完全奏效 寻找解决方案 div class flex flex row h screen bg
  • Scala 中丰富的枚举

    我正在寻找一种在 Scala 中实现丰富枚举的机制 就像在 Java 中向枚举添加抽象方法并在枚举的实例中实现它们一样 请注意 使用密封特征和案例对象不是一个解决方案 因为我将无法迭代现有的案例对象 除非我维护它们的列表 这对于更改非常脆弱
  • 将 XML 中的数据字段提取到 Excel 中

    我有一个巨大的 Excel 电子表格 其中包含客户记录 其中每一列都是一个字段 有一个名为 人口统计 的字段 其中包含客户的调查结果 并且完全采用 XML 格式 也就是说 每个客户都有一份关于其人口统计信息的调查结果 如性别 婚姻状况 收入
  • 未定义的变量 php 通知解决方法?

    我只是打开通知 因为它有一些我调试时需要的重要信息 话虽这么说 我发现未定义的变量真的很痛苦 例如 要删除未定义的变量通知 我必须输入以下代码 if the month row the month into if isset the mon
  • Spring:在 JUnit 测试中测试 JSP 输出

    我们有一个 API 它返回 JSP 作为视图 例如 RequestMapping value cricket matchId method RequestMethod GET public String getCricketWebView
  • 使用模板输入变量的 Angular 2 自定义结构指令绑定不起作用

    我创建了一个类似于的自定义结构指令ngFor 当我尝试使用它时
  • 使用 Plots.jl 有效地对子图进行动画处理

    我正在尝试使用 Plots jl 和 GR 后端在 Julia 中创建具有三个子图 一个表面 两个热图 的动画 到目前为止 我的代码中最慢的部分是这些图的生成 因此我试图找到最有效的方法来完成它 我尝试重新调用动画循环内的绘图 但这比就地修
  • C#:带有 SocketAsyncEventArgs 的 SSL?

    我正在使用 C NET 开发套接字服务器 我使用 SocketAsyncEventArgs 类提供的异步模型 因为它必须是高性能服务器才能在短时间内支持许多连接 接下来 我想确保之间的通信安全 客户端和服务器 我想我可以使用 SSL 有没有
  • 如何在 onedriveAPI 的请求正文中指定 @microsoft.graph.conflictBehavior

    我正在开发一个具有以下要求的 C 项目 如果文件夹不存在则创建一个 检查是否已经存在 如果存在则增加文件名 来自 Onedrive API 文档在 OneDrive 中创建新文件夹 https dev onedrive com items
  • django:更改扩展模型类的默认值

    我早些时候发布了类似的问题 但这个问题有所不同 我有一个相关类的模型结构 例如 class Question models Model ques type models SmallIntegerField default TYPE1 Cho
  • MySQL 无法启动 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 当我尝试启动 MySQL 时 我得到 ERROR 2002 HY000 Can t connect to local MySQL server thr
  • 代码::块中的 C DLL

    我在 Code Blocks 中找不到有关如何创建 C DLL 的任何信息 每当我尝试查找它时 它都会显示在托管编程语言中使用 C DLL 的链接 Code Blocks 没有提供 C DLL 的选项 我该怎么办 文件 gt 新建 gt 项
  • 如何通过 telethon 获取 telegram 私人频道 id

    您好 不知道如何解决这个问题 因此我们将非常感谢任何帮助 我订阅了私人频道 该频道没有用户名 我也没有邀请链接 管理员刚刚添加了我 由于我在工作中使用此频道 为了加快处理速度 我想使用 Telethon 处理在该频道上发布的消息 该方案的核
  • 使用 glm 指定 R 中的公式,无需显式声明每个协变量

    我想将特定变量强制纳入 glm 回归 而不完全指定每个变量 我的真实数据集有大约 200 个变量 到目前为止 我在网上搜索中还没有找到这样的样本 例如 只有 3 个变量 n 200 set seed 39 samp data frame W
  • 将逗号分隔的字符串转换为日期时间

    Exchange Web 服务有一个方法 采用以下格式获取日期时间 appointment Start new DateTime 2014 03 04 11 30 00 我有一个字符串 它是通过连接各个字段形成的日期 我的字符串如下所示 s
  • 如何在 Windows 中重新启动远程计算机上的服务? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 有时在调试时 我需要重新启动远程计算机上的服务 目前 我正在通过远程桌面执行此操作 如何从本地计算机上的命令行完成此操作 您可以使用服务控制台 单击左
  • Visual Studio 2017 网站菜单“启用 C# 6 / VB 14”无法加载 Nuget 包

    一段时间以来 每当我单击网站菜单 启用 C 6 VB 14 时 我都会收到一条异常消息 指出在以下主要资源中找不到 Package Microsoft CodeDom Providers DotNetCompilerPlatform 1 0
  • GIT 是否可以仅在一个分支中跟踪文件,而不能在其他分支中跟踪文件?

    我使用 GitFlow 作为 git 工作流程 我为电子微控制器编程 当我在开发分支时 我不需要跟踪或提交已编译的 HEX 文件 我只需要代码 但是当我在发布或主分支上时 我确实需要提交生成的十六进制文件 目前 我 在精神上 忽略了 HEX