为什么 Git 子树总是处理每个提交?

2024-01-02

我在用Git 子树 https://github.com/git/git/blob/master/contrib/subtree/git-subtree.txt在项目之间共享我的源代码的子文件夹。这工作正常,但每次我执行 git 子树推送时,终端都会显示一个不断增长的提交列表:

git subtree push --prefix=public/js/engine engine-remote master --squash
git push using:  engine-remote master
-n 1/    1193 (0) 
-n 2/    1193 (1) 
-n 3/    1193 (2)
...
-n 1193/    1193 (1152)
Counting objects: 176, done.
...

这是为什么?我可以配置不同的东西来防止这种情况发生吗? 我知道它需要检查父项目的提交,但我希望它只是到最后一次从子树成功拉取的点。


Answer 0

我在日常工作流程中不使用 git-subtree,所以我必须对此进行一些研究,但是在这里:

git subtree push does git subtree split其次是git push。命令,这显示了这个提交列表实际上是git subtree split. If split在提交消息中找不到标有适当的“git-subtree-dir:”行的提交,然后它会遍历整个项目历史记录并创建新的历史记录,修剪到单个目录 - 在您的情况下它必须这样做。

如何避免这种情况?

成功后git subtree push, 你可以做git subtree split --rejoin[1]。这将创建空的合并提交,它将子树的历史记录与项目的历史记录连接起来;未来的电话git subtree在分割子目录 [2] 的历史记录时将使用来自该合并提交的消息。 相同的信息should被放置在合并提交之后git subtree pull,但通常不是(有时是)[3];你可以做git subtree split after git subtree pull,但结果图看起来很难看。请参阅[3]。

Answer 1

真的很糟糕吗?很高兴将其打印出来。在打印每行回车符后,我得到了很好的“动画”,从 0 到 n (在单行中 - 不是输出,您粘贴在问题中)。也许您的终端无法识别回车符(我猜这可能是 Windows 或 OS X 上的问题)?您使用什么操作系统?

Answer 2

你可以隐藏它-q|--quiet如果你不能使用split --rejoin这个输出确实让你烦恼。

参考文献和我的评论

[1] 但请注意!手册页说:

如果您使用“--squash”进行所有合并,拆分时不要使用“--rejoin”,因为无论如何您都不希望子项目的历史记录成为项目的一部分。

So use --rejoin如果它适合您的特定情况。

[2] 可以说这可以实现更好,但是git-subtree无法将其存储在提交对象本身中,因为它不是 git 的本机功能(还?)。这是 bash 脚本,您可以在 contrib/ 目录中找到:https://github.com/git/git/blob/master/contrib/subtree/git-subtree.sh https://github.com/git/git/blob/master/contrib/subtree/git-subtree.sh这可能就是为什么这个功能的文档很少的原因(嘿,但是手册页很棒)。

[3] 我尝试了一下,有时看到正确的合并提交出现 - 不知何故,它似​​乎与情况有关,当git subtree pull导致了冲突。这可能表明 git-subtree.sh 中存在错误;给我更多信息,以便我可以进一步调查(并希望修复它)。我查看了该文件的历史记录,没有看到相关的修复...

你使用什么版本的 git? (我的是1.9.3)。 您使用该共享目录的工作流程是什么? 是吗git subtree add编辑? 提交是双向流动的,还是仅在单个存储库中创建?

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

为什么 Git 子树总是处理每个提交? 的相关文章

  • 哪些 git hooks 适用于“git rebase --continue”?

    我正在尝试为我的组织构建一组 git hook 脚本 我想使用的一个脚本 仅用于我自己的多个项目 将是检查git rebase continue我的代码中没有留下任何冲突标记 lt lt lt lt lt or gt gt gt gt gt
  • 使用BFG时可以指定多个文件吗?

    我正在尝试删除通配符无法覆盖的多种类型的文件 我尝试使用多个 delete files 但它不接受它 还尝试将文件全部放在 delete files 之后 但它也不接受它 有没有一种方法可以将它们全部放在一个命令中 如果没有 那么我必须运行
  • git 错误:无法处理 https

    当我尝试使用 git clone 时https xxx https xxx我收到以下错误我不处理协议 https 有人可以帮我吗 完整消息 dementrock dementrock A8Se git 克隆https git innosta
  • 如何在GIT中构建标签树?

    作为 GIT 的频繁用户 我喜欢git log graph尽我所爱git tag 我负责一个大型 GIT 存储库 其中有太多分支和标签 而且我的处理速度太慢西西弗斯式的 https en wikipedia org wiki Sisyphu
  • 以非交互式方式查找合并提交的正确父级

    我正在准备 svn2git 迁移 同时https github com nirvdrum svn2git https github com nirvdrum svn2git虽然非常有用 但我仍然遇到了一些恶作剧 我已经清理掉了大部分 但还剩
  • npm install 的问题(Angular)

    今天我尝试创建一个新项目 所以我使用这个命令 ng new NAME style less 并在我的cmder中弹出错误和警告 所以我卸载了 Roaming npm 和 npm cache 中的节点和文件 然后我安装了node并再次下载cm
  • 有没有一种干净的方法来处理两个以相同内容开头的原始 git 存储库?

    假设我有两个根据相同的初始内容创建的存储库 例如 如果我使用 git 来管理 etc apache2 中的 apache 配置文件 然后我运行git init分别在机器 A 和机器 B 上 此后 我对 machine b 进行了一些配置更改
  • Jmeter 和 Bitbucket 服务器负载测试

    我是 Jmeter 的新手 我有一个本地托管的 Bitbucket 服务器 有时 当 Bamboo plan 触发并发 git 克隆操作时 会发现 Bitbucket 服务器变得缓慢 无响应 我必须重新启动服务 我想通过对另一个本地创建的
  • BitBucket 应用程序密码:git 命令行访问有哪些权限?

    我了解如何为 BitBucket 创建应用程序密码 如中所述Atlassian 的应用程序密码信息 https support atlassian com bitbucket cloud docs app passwords and 这个答
  • 如何从 Git 存储库中删除选定的提交日志条目,同时保留其更改?

    我想从线性提交树中删除选定的提交日志条目 以便这些条目不会显示在提交日志中 我的提交树看起来像 R A B C D E HEAD 我想删除 B 和 C 条目 以便它们不会显示在提交日志中 但应保留从 A 到 D 的更改 也许通过引入单个提交
  • 如果 git 凭证管理器显示令牌,它如何安全

    I have credential helper manager core 这是 Windows 凭据管理器的新助手 我不明白如果你可以让 git 显示你的凭据 它如何安全git credential fill 重现步骤 通过执行命令确认凭
  • Git hook:如果创建了新分支,则将新文件添加到存储库

    我正在编写一个 git hook 它检查是否创建了新分支 如果是 则将一些预定义文件添加到该新分支的存储库中 一些配置文件 然而 由于分支实际上正在创建过程中 所以我的逻辑失败了 目前我正在这样做post receive钩子 看起来像这样
  • 如何应用 .diff 文件

    我有一个 diff 类型文件 看起来像爆炸了 diff git a res User lua b res User lua index db8c2cc 4d2af0f 100644 a res User lua b res User lua
  • 如何在 Windows 上使用 cygwin、git bash 和 vagrant VM 中的 git 设置 git?

    My Setup 我们在工作中使用 Windows 10 我的任务是使用 Vagrant 构建一个我们都想使用的开发虚拟机 我们通过 Vagrant SSH 挂载将 git 文件夹挂载到虚拟机中 目前效果非常好 我们还使用 Visual S
  • GIT 或 SVN 或...适用于前端开发人员

    我最近开始将一些项目导入到工作中的 Subversion 存储库中 在接下来的几周内 我希望团队中的每个人都能负责自己的源代码控制管理 我选择 SVN 而不是 GIT 的原因是我想要everyone团队中的人员 包括设计师 前端人员 集成商
  • Sublime Text 2 的 git 提交错误[重复]

    这个问题在这里已经有答案了 我正在 Udacity 上学习 如何使用 Git 和 GitHub 课程 我正在按照示例进行操作 但遇到了问题 我自己尝试通过谷歌搜索和反复试验来解决问题大约两个小时 我认为是时候在 StackOverflow
  • 如何仅对最新合并后的提交进行变基?

    考虑以下场景 我从master那里检查了一个分支 我做了一些承诺 我合并了更新的master 我做了更多的承诺 现在我想要从第 4 点开始变基提交 以便从第 2 点开始的提交不受影响 所以如果我最初有 1 2 x x x x x x x m
  • Git合并策略:空格使默认显示不冲突并带来意想不到的结果

    经过多次试验 我得到了这个简单的测试用例场景 a gt b gt c master gt d gt b gt e branch Where b 是樱桃精选b e is a merge from master b 之后完成c and c对相同
  • 如何使用和理解wso2 git仓库?

    我刚刚开始对wso2感兴趣 我正在寻找移动设备管理解决方案 所以我测试了 wso2 EMM 但我发现了一些限制 我想知道是否可以自己实现 我的问题是我完全迷失在 wso2 git 存储库中 有没有我错过的指导书或逻辑 如果有人帮助我解决这个
  • libgit2 返回:Refspec 'refs/heads/origin/HEAD' 在 TortoiseGit 中未找到错误

    启动 TortoiseGit 时出现此错误 无法获取所有参考文献 libgit2 返回 未找到 Refspec refs heads origin HEAD 虽然很烦人 但这并不妨碍我使用 TortoiseGit 然而 我想让它消失 因为它

随机推荐

  • 具有手动内存管理的解释语言?

    哪些解释型语言无指针语言 IE Python Java Perl PHP Ruby Javascript 等 具有手动内存管理功能 我不记得曾经听说过 解释型语言主要担心的不是垃圾收集的非确定性延迟 或没有足够延迟时的空间复杂性 吗 那么为
  • MPAndroidChart - 自 v2 以来删除顶部边框/轴

    我将 MPAndroidChart 从 v1 7 升级到 v2 并且必须更改一些内容 新的事情之一是我现在似乎有一个最大值的顶部边框 我试图隐藏所有边框的代码是这样的 LineChart graph LineChart connection
  • 如何使用 Delphi 获取与文件扩展名关联的程序名称?

    我需要获取当前与当前用户的文件扩展名关联的程序的名称 如果右键单击文件并选择属性 那么我需要的是 打开方式 行右侧的程序名称 例如对于 xls 我希望能够获得答案 Microsoft Office Excel 或者用户作为默认程序打开 xl
  • 从 Java 应用程序在 Chrome 控制台中执行 JavaScript 命令

    我想创建一个简单的应用程序 它将在特定页面上的 Chrome 控制台中执行 JavaScript 命令并返回输出 也就是说 我想从当前页面获取所有可访问的链接 我可以通过在 Chrome 控制台中运行以下命令来完成此操作 urls a fo
  • WordPress 中哪些列存储 slug

    在 WordPress 中 哪一列存储 slug 自动生成的或用户输入的 我在其中都找不到这个wp posts or wp postmeta The wp posts GUID存储直接链接 但不存储 slug 帖子和页面的 slug 存储在
  • 核心图像:使用 CICrop 后,应用合成滤镜无法对齐

    我正在使用 CICrop 通过剪切图像的顶部和底部来将图像裁剪为特定尺寸 之后 我应用 CIMultiplyCompositing 过滤器之类的东西 将裁剪后的图像与另一个图像组合起来 两张图片大小相同 但结果显示两张图片没有对齐 其中一张
  • VBA - 在“IF 语句”内嵌套“With 语句”

    语言 VBA MS Access 我在代码中使用用户定义类型 UDT 我希望能够根据状态变量确定我正在将数据加载到 UDT 的哪个部分 我的第一次尝试是使用嵌套在 IF 语句中的 With 语句 这不起作用 我收到一个编译器错误 显示 El
  • 不明白二叉树最大路径和问题的解法

    GeeksforGeeks 网站已推出一个办法 https www geeksforgeeks org find maximum path sum in a binary tree 对于二叉树的最大路径和问题 问题如下 给定一棵二叉树 找到
  • 有条件的 Django 中间件(或如何排除管理系统)

    我想使用我在整个网站上编写的一些中间件 大量页面 因此我选择不使用装饰器 因为我想对所有页面使用代码 唯一的问题是我不想将中间件用于管理代码 并且它似乎对它们很活跃 有什么方法可以配置 settings py 或 urls py 或者代码中
  • 为什么 FormControl#valueChanges 的订阅没有被垃圾收集?

    我浏览过很多帖子说需要取消订阅FormControl valueChanges以防止内存泄漏 我了解取消订阅的 何时 和 如何 Observables 据我了解 产生的 Observablesinfinite需要取消订阅的值的数量以及For
  • 检查 SQL Server 服务器可用性的最快方法是什么?

    我有一个在多个位置使用的 MS Access 程序 它连接到 MS SQL Server 表 但每个位置的服务器名称都不同 我正在寻找最快的方法来测试服务器是否存在 我当前使用的代码如下所示 ShellWait sc ServerName
  • 将 PivotItemHeader 样式应用于 UWP 中的 PivotItem

    我已经创建了一个 PivotItemHeader 样式 其中包含资源中的键 但不知道在哪里应用它 尽管如果我删除 Key 它将应用于所有 PivotItemHeader 但我不想这样做 我只想将此应用到选择枢轴
  • 如何从代码中更改宽高比约束值?

    我在 xib 中为 imageView 指定了 1 2 的长宽比约束 我已经为约束创建了一个 IBOutlet 现在我需要根据某些条件将纵横比更改为 1 1 我想知道除了删除旧约束并放入新约束之外 是否有任何方法可以更改约束的乘数值 我认为
  • iOS 9.x 中嵌入式 Facebook 浏览器的视口/页面高度错误

    当打开demo https mtr github io core layout examples 申请来自核心布局 https www npmjs com package core layout使用 iOS 9 x 至少 上 Faceboo
  • 在 Google 表格的 Google 脚本中的特定表格上使用 onedit() 触发器

    我需要运行由 onedit 触发的脚本 仅对其中的一张进行处理 我已经尝试过以下操作 但目前我无法让脚本仅在所需的工作表 库存 上工作我确信这对于知道的人来说会非常简单 function onEdit e var range e range
  • jQuery 日期选择器,其中文本输入是只读的

    我想使用 Jquery 日期选择器 我已经使用 alt 字段选项进行了设置 我在文本字段中显示 D M Y 但提交 Y M D 到目前为止一切正常 发送正确的数据等 但是我想阻止用户手动输入日期 我最初将 INPUT 字段设置为禁用 该字段
  • 为 QStringListModel 项设置自定义数据

    我有 QStringListModel QStringListModel blocksModel new QStringListModel 以及一个继承自QObject的类 class Block public QObject Q OBJE
  • Flutter Android Studio 调试器跳过框架文件

    是否可以配置 Android Studio Debugger 来跳过 flutter 框架文件和包文件 我对 Step Over 或 Step out 不感兴趣 因为例如在调用调度之后使用 redux 我想逐步跳过直到我编写的减速器 而不遵
  • django-haystack 和 Solr 的拼写建议

    我收到的拼写建议为 无 首先 我在 settings py 文件中设置了这个 HAYSTACK INCLUDE SPELLING True 我已经重建了索引 python manage py rebuild index 并对其进行了良好的更
  • 为什么 Git 子树总是处理每个提交?

    我在用Git 子树 https github com git git blob master contrib subtree git subtree txt在项目之间共享我的源代码的子文件夹 这工作正常 但每次我执行 git 子树推送时 终