将所有提交导出到 ZIP 文件或目录中

2024-02-13

如何将所有提交导出到 ZIP 文件(包含全部文件,不仅仅是补丁/差异):

myproject-commit1-67d91ab.zip
myproject-commit2-9283acd.zip
myproject-commit3-c57daa6.zip
...

或进入目录:

myproject-commit1-67d91ab/
myproject-commit2-9283acd/
myproject-commit3-c57daa6/

?

我正在考虑这样的命令:

git archive --format zip --output myproject-commit3.zip c57daa6

from 如何使用 git-archive 导出特定提交? https://stackoverflow.com/questions/11018411/how-do-i-export-a-specific-commit-with-git-archive,但是如何得到所有提交?

Notes:

  • 目标是做出口每次提交的所有文件,这样我就可以访问它们,即使我没有git在机器上

  • 答案来自如何通过运动鞋网(外部文件)将 Git 更改集从一个存储库导出到另一个存储库? https://stackoverflow.com/questions/49101425/how-can-i-export-git-change-sets-from-one-repository-to-another-via-sneaker-net创建一个.bundle文件,但似乎无法在没有git,所以这不是我要找的

  • 这几乎有效:

    for ((i = 0;; ++i)); do git checkout master~$i || break; tar czf ../myproject-commit$i.tgz .; done
    

    但它也归档当前目录中的所有文件not git add编辑到存储库...如何避免这个问题?


你不能,除非通过你已经在考虑的方法。

具体来说,转every提交到 zip 存档(每次提交一个单独的存档),只需迭代每个提交,将每个提交转换为 zip 存档。

您的迭代方法只需要遍历所有可能的提交,而不是仅遍历该对象的所有第一父母master分支,并且您必须使用git archive在每次这样的提交上。因此:

git rev-list --all |
    while read hash; do git archive ...options... $hash
done

命令git rev-list --all告诉 Git 按某种顺序打印出每个可到达的提交哈希 ID。要更改顺序,请使用两者可用的各种排序选项git rev-list and git log (e.g., --author-date-order or --topo-order).

If you don't想要每一次提交——如果你只想要 master 的第一父母——你仍然可以这样做git rev-list:

git rev-list --first-parent master | ...

在这里,由于 Git 只从任何一次提交开始遍历第一父母master标识,哈希 ID 将以 Git 认为的正向顺序输出,即向后穿过分支的第一个父级:

...--o--o--o--o--o--o------o   <-- master
      \        \          /
       \        X--X--...X   <-- somebranch
        \         /
         X--X----X--X   <-- anotherbranch

没有任何一个X提交将会出现,因为它们不在第一父系上。 (没有--first-parent,因为所有提交somebranch,以及除最后一个之外的所有anotherbranch, are also on master,你会得到所有X承诺。)

[Basj 添加了以下内容,这似乎是 bash 特定的,因为$((i=i+1)):] 编辑:这是一个随时可用的命令,可以按照问题中的描述执行此操作:

git rev-list --all --reverse | while read hash; do git archive --format zip --output ../myproject-commit$((i=i+1))-$hash.zip $hash; done

[torek 觉得需要添加:-) :请注意,上面按顺序枚举提交,即使这不是可逆映射。]

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

将所有提交导出到 ZIP 文件或目录中 的相关文章

  • Visual Studio Code 内置故事,用于查看 git 提交历史记录并对其内容进行比较

    In this https stackoverflow com questions 37899765 how can i view the git history in visual studio code 60013101 noredir
  • 如何解决 VS Code 中变基拉取的合并冲突?

    当我做一个git pull rebase 并且我的提交中存在合并冲突 我得到冲突差异视图 解决所有冲突并暂存文件 然后呢 我可以打开终端并运行git rebase continue但是 VS Code 中不应该有一个按钮来完成变基吗 只需使
  • 从自己的 gitlab 服务器安装节点模块

    我想从我们的 gitlab 服务器安装节点模块 这是存储库的链接 http ABCD GITLAB myGroup myNodeModule git http ABCD GITLAB myGroup myNodeModule git 根据n
  • 如何禁用 GitHub 中的拉取请求?

    我试图了解如何禁用 github 中的 拉取请求 问题一 我们正在尝试使用变基工作流程 这意味着如果不是快速推进 那么使用拉取请求可能会有害 一种解决方案 为我想要禁用拉取请求的分支设置分支权限 或者将我添加为任何进入 master 的内容
  • 如何生成类似github的影响图?

    是否有一些程序 或者我错过的一些神奇的 git 插件 可以从 git 存储库获取影响图或类似的东西 而无需通过 github 就数据收集而言 我可以生成图表 我不确定从哪里开始编写自己的代码 我假设有一些标志我可以传递给 git log 来
  • GitHub Pages (github.io) doxygen 生成的页面未找到 (404)

    我不明白为什么找不到 doxygen 生成的页面 404 它在Github存储库中的路径是https github com AubinMahe AubinMahe github io blob master doxygen html dd
  • TortoiseGit - 更改默认合并消息

    系统描述 Windows 7的 git版本2 10 1 windows 1 乌龟Git 2 3 0 0 I want 合并提交消息在不同的情况下有所不同fully自动方式 no manual amend Summary 在windows上
  • 如何停用 Xcode git 功能? (删除 git 集成)

    我的 Xcode 项目位于 git 上 但我不喜欢 Xcode git 集成 有时 我有来自 Xcode 的错误 https stackoverflow com questions 7388560 error fatal not a git
  • GitPython 检查 git pull 是否更改了本地文件

    使用 GitPython 我只想在拉取后本地文件发生更改时才调用函数 例如 如果我在一台单独的计算机上进行推送 然后拉第一台计算机 它按预期工作 但不提供任何输出 理想的输出是已更改的文件列表 或者只是告诉我拉动是否有错误 没有拉动 因为分
  • Smartgit:自动插入提交消息

    有没有办法使用钩子脚本在 Smartgit 中自动插入提交消息 重击 如果用户提交了他的更改 我想预加载提交消息字段 我没有看到任何SmartGit配置 http www syntevo com smartgit documentation
  • 在种子项目上构建时如何组织 git 存储库

    我正在基于从 github 克隆的种子项目 MEAN io 构建一个网站 如何将这些文件与我自己的文件分开 由于该种子提供了广泛的文件框架 因此我自己的文件分布在整个项目中 我希望能够从种子中提取更新 但不能将其与我添加的文件混合 我知道我
  • 如何在源代码管理中存储 Visual Studio 的调试配置

    Visual Studio 的调试配置存储在 user文件是用户特定的并且传统上被源代码管理忽略 我对工作目录参数感兴趣 我需要它在程序员的机器上保持一致 并且它具有以下价值 outDir而不是默认的 ProjectDir 我怎样才能解决这
  • Git撤销本地分支删除

    我刚刚删除了错误的分支 并进行了一些我需要的实验性更改git branch D branchName 如何恢复分支 您可以使用git reflog http git scm com docs git reflog查找分支最后一次提交的 SH
  • 为什么 git 在每次合并时都运行“git gc --auto”?

    今天 git 开始表现得很有趣 嗯 比平时更有趣 坚持运行git gc每次合并后 即使它们是背靠背的 C Projects my current project gt git pull remote Counting objects 31
  • 在 python 中找不到 git 可执行文件

    我试图使用访问密钥克隆 git 存储库 但是当我尝试运行它时 它抛出一个异常 说找不到 git 可执行文件 但我已经安装了 git 并且 in it py 显示了正确的路径 C Program Files Git bin 我还安装了 git
  • Git - 使用过滤器分支删除带有空变更集的提交

    如何使用 git filter branch 删除没有变更集的提交 我使用以下方法重写了我的 git 历史记录 git filter branch tree filter rm r f my folder f HEAD 效果很好 但现在我有
  • 如何使用 git 找到一个分支中但不在另一个分支中的所有提交?

    我有两个分行master and live Master是发展 分支并包含尚未准备好进入的提交live 如果在master需要进入的分支live树枝然后他们被樱桃采摘master to live 有时会做出承诺live分支然后是 樱桃摘入m
  • git rebase 吃了我的提交!为我翻译“git reflog”输出?

    我已经完成了五次提交 我想在推送它们之前将它们全部合并为一次提交 出于某种原因 我决定尝试通过与通常使用的不同的方式来做到这一点 FWIW 我试图按照此处的说明进行操作http gitready com advanced 2009 02 1
  • 使用nodegit切换分支/标签

    我整个早上都在尝试打开现有的存储库并使用 nodegit 更改分支或标签 文档内容很丰富 但似乎已经过时了 关于我做错了什么有什么想法吗 var NodeGit require nodegit var open NodeGit Reposi
  • 如何在 git 中将我的功能分支变基到开发分支,尽可能减少冲突?

    我的功能分支已超过大约 30 次或更多提交 与此同时 在开发分支中 其他开发人员还推出了一些其他功能 因此 每次在开发中发布新功能时 我都会被要求 将开发分支重新建立到我的功能分支上 解决冲突 如有 继续在您的功能分支中开发 问题 第二步就

随机推荐

  • 如何为 Android 汽车操作系统构建 AOSP?

    我已经从 x86 下载了 AOSP 代码库https www android x86 org https www android x86 org 它构建得很好 我想知道我如何设置config or mk 这样我就可以编译或构建具有 Andr
  • 如何告诉 Valgrind 完全抑制特定的 .so 文件?

    我正在尝试在我正在开发的程序上使用 Valgrind 但 Valgrind 为我正在使用的库之一生成一堆错误 我希望能够告诉它抑制涉及该库的所有错误 我可以为抑制文件提出的最接近的规则是 rule name Memcheck Cond ob
  • javascript: 这个关键字

    I know this指向函数操作的当前对象 所以这是根据定义的代码 function foo alert this output window 所以 现在函数 foo 等于 window foo 但现在在这里 function foo f
  • 为什么这个 Haskell 程序中没有使用尾部调用优化?

    以下程序会破坏堆栈 find first occurrence Eq b gt b gt b gt Int gt Int find first occurrence e i 1 find first occurrence e x xs i
  • *tmp*[[j]] 中的错误:下标超出范围

    抱歉帖子太长 我是 R 新手 一直在努力提高对这门语言的掌握 我偶然发现了这个有趣的足球结果建模项目 http www1 maths leeds ac uk voss projects 2010 sports JamesGardner pd
  • 如何检查某种情况是否持续超过 15 分钟?

    以下是数据集的示例 Date Value 2020 01 01 01 35 50 2020 01 01 01 41 49 2020 01 01 01 46 50 我想检查连续 15 分钟的 值 是否等于 50 如果是 我想提取它发生的日期
  • 触摸事件 (touchesMoved) 不适用于 UIScrollView 内的 UIView

    我有一个UIView里面一个UIScrollView 以及UIViewControllers对于那些没有接收触摸事件的视图 如果我将视图从滚动视图中取出 那么它就可以工作 UserInteraction 在所有视图中都是默认打开的 但它仍然
  • 如何授予特定用户对特定节点的编辑权限?

    如何授予特定用户对特定节点的编辑权限 我有一个名为 学生 的用户角色 多个用户具有该角色 但只有少数用户可以编辑节点 我怎样才能意识到这一点 我将尝试介绍一些用例 以及如何解决它们 If all members of a category
  • 插入行并获取生成的 ID

    我正在尝试使用 Spring 的JdbcTemplate类将行插入到名为的 MySQL 表中transaction并获取生成的ID 相关代码是 public Transaction insertTransaction final Trans
  • 如何使用 Objective C 更改 iOS 设备的系统壁纸/背景?

    我很好奇是否可以通过您自己的应用程序以编程方式更改 iOS 设备的系统壁纸 背景 Apple 不提供公共 API 来执行此操作 用户必须通过 设置 应用程序选择要用作壁纸的图片 您可以让您的应用将图片保存到用户保存的照片中 并指示用户手动更
  • 如何在 Symfony 2.0 中使用元标签

    我不知道如何在我网站的所有页面中添加元标签 正确的 您可以将元标记放入网站的基本布局中 对于更复杂的愿望 您可以将它们放入一个块中 如果您愿意 您可以在特定模板中覆盖它们 有关更多信息 请查看 Symfony2 文档创建和使用模板 http
  • Javascript 正则表达式模式 \W 是否包含空格?

    我正在使用这个表达 W g匹配除数字 字母和空格之外的所有字符 好像是包含空格的 我将如何构建一个不包含空格的正则表达式 a z0 9 s ig 解释 Character class which matches characters NOT
  • 找到沿两个平面相交的线

    我试图在 3D 中绘制由两个平面相交形成的线 但我无法理解数学 这已被解释过here http mathinsight org intersecting planes examples and here http mathworld wol
  • 如何使用 Espresso 点击 Android 图库

    我们目前正在使用 Espresso 测试一个 Android 应用程序 我们要测试的功能之一是从本地图片库中选择图片 图像 我们可以一路调出图库视图 但无法在结果窗口中从 最近 下载 图库 中进行选择 下面包含了我们如何取得如此进展的一个片
  • Watir Webdriver 计算 UL 列表中的项目数量

    我进行了一些搜索 但无法找到合适的答案 基本上我有一个长度不同的无序列表 我想遍历列表 做一些其他事情 然后返回并选择列表中的下一个项目 当我定义循环应该迭代的次数时 我可以很好地做到这一点 因为我知道列表中的项目数量 但是我不想为每个测试
  • python 3,尝试从多个 HID 输入读取,Raspberry Pi

    我有一个条形码扫描仪连接到我的 RasPi 没有任何 tty 这意味着没有显示器的无头 换句话说 数字输入的键盘记录器 该扫描仪可读取 GTIN 或 EAN 等数字条形码 它有效 脚本在启动时由 sh 启动 我使用的脚本如下所示 impor
  • 合并多个 BatchEncoding 或从 BatchEncoding 对象列表创建张量流数据集

    在标记标记任务中 我使用转换器标记生成器 它输出 BatchEncoding 类的对象 我分别对每个文本进行标记 因为我需要从文本中提取标签并在标记后重新排列它们 由于子标记 但是 我找不到一种方法可以从 BatchEncoding 对象列
  • 如何通知其他应用程序我的应用程序是 Windows 桌面的一部分?

    我想在 C 中为 Windows 创建一个 工具栏 并希望将其放置在 Windows 桌面的顶部空间 我希望其他 Windows 程序无法覆盖我的应用程序 我还希望其他应用程序将我的窗口视为桌面的一部分 以便当它们最大化时 您仍然可以看到我
  • Matlab调试:跳过下一行而不执行

    问题 问题的完整描述如下 有人对如何欺骗 Matlab 跳过一行或多行代码有建议吗 mex java 重写一些内部Matlab功能 有谁知道在哪里db 代码文件可能位于 如果存在 Matlab 中有几个函数可以在调试 运行程序时进行流量控制
  • 将所有提交导出到 ZIP 文件或目录中

    如何将所有提交导出到 ZIP 文件 包含全部文件 不仅仅是补丁 差异 myproject commit1 67d91ab zip myproject commit2 9283acd zip myproject commit3 c57daa6