问题标签 [git-archive]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
git - 如何从 git 存档创建本地 git 存储库?
是否可以从 Github 存储库存档的提取内容在本地重新创建 git 存储库?
为了添加一点上下文,我的 Android 应用程序使用 DownloadManager 和 Github 存储库存档链接下载 git 存储库存档,然后将其提取到设备的本地存储中。我希望将这个提取档案的内容转换为远程档案的本地存储库并跟踪其内容。
git - git:获取特定文件时选择分支
获取文件时可以定义一个特定的分支,如下所示:
这将从默认项目分支中检索文件。
如何为上述文件检索选择特定分支?
git - 使用 GitPython 的 git archive --remote 命令
如何使用 GitPython 使用命令(git archive --remote)?根据 GitPython 文档,我们可以直接使用 git。我正在做类似的事情:
git = repo.git git.archive(remote=' http://path ')
但收到错误“异常是:Cmd('git')失败,原因是:退出代码(1)”
我可以查看任何示例以在 python 脚本中执行 git archive --remote 吗?
谢谢
git - 将所有提交导出到 ZIP 文件或目录中
如何将所有提交导出到 ZIP 文件中(包含所有文件,而不仅仅是补丁/差异):
或进入目录:
?
我在考虑以下命令:
从如何使用 git-archive 导出特定提交?,但是如何获得所有提交?
笔记:
目标是导出每个提交的所有文件,以便即使我没有
git
在机器上也可以访问它们如何通过运动鞋网(外部文件)将 Git 更改集从一个存储库导出到另一个存储库的答案?创建一个
.bundle
文件,但如果没有它似乎无法访问它git
,所以这不是我要找的这几乎有效:
但它也会归档当前目录中未
git add
编辑到 repo 的所有文件......如何避免这个问题?
git - 你如何将你的 repo 下载为文件目录
我正在尝试下载私人 git repo。
当我做git clone https://<DEV_USER>:<DEV_PWD>@github.<corpName>.net/Svcs/repo.git
有用!
但我真的不需要所有的 git 历史。我只需要 repo 作为文件目录。因此,我试图存档。
git archive --remote=<DEV_USR>:<DEV_PWD>@github.<corpName>.net:Svcs/repo.git
我收到以下错误
git - 如何忽略“git存档”中的文件/目录,只创建子目录的存档?
TL;DR:该git archive
命令似乎只归档单个子目录或坚持.gitattributes
并从生成的 ZIP 中排除文件/目录,但不能同时执行这两种操作。
假设我的 git 存档中有这个目录结构(为便于使用而简化):
现在我想获得一个包含以下内容的 ZIP(或 tar)存档:
- 仅目录的内容
src
,因为这是我要存档的源代码。然而,没有src
直接的,它本身。 - 在这些目录中,我可能想忽略更多文件夹和文件。例如
tests
,显然需要忽略。
所以最后,档案应该是这样的:
现在,我认为git archive
这是一个很好的工具。您可以仅归档子目录并使用.gitattributes
文件来export-ignore
排除我想要的目录和文件。
目的是还可以.gitattributes
在多个子文件夹中递归使用,因此我也可以始终从存档中排除单个文件,而无需知道上层文件夹结构。(这对包含的库很有用,例如)
我还注意到您可能需要添加参数--worktree-attributes
,以便 git 在.gitattributes
任何地方都能找到文件。而且我已经使用**
排除子目录。没关系。
所以(在这里测试)我试过这个:
所以只归档子目录没有任何问题,但排除文件不起作用。
例如,我将其.gitattributes
放入src
目录中:
现在,运行上面提到的命令,它仍然包含tests
目录内容。但是,如果我运行git archive --worktree-attributes --format=tar HEAD | tar t
,即不归档子目录,则列表以:
这意味着它不包括tests
目录的内容。出于某种原因,它并没有排除目录本身,但这可能是我这边的另一个问题。
相反,如果我将以下文件放入根目录,src/tests
则排除整个目录(尽管我说过它们在语义上是相同的):
我的 git 版本:2.17.2
Fedora 28
编辑:.gitattributes
我现在注意到当我将文件放入根目录时它似乎可以工作,但提到相对于src
目录的文件路径。即这样做(也通过文件排除测试):
…不知何故使它与src
归档命令一起工作。现在,它不再适用于归档整个目录(但这没关系)。但是,如果我把这个文件放在其他任何地方(比如在src
目录中),它又不起作用了……</p>
由于我的目标是.gitattributes
在子目录中包含文件以排除这些目录中的特定内容,因此这仍然无法按预期工作。
git - 在詹金斯管道作业中使用 git 存档而不是使用凭据进行克隆
在我的 Jenkins 管道工作中,我曾经像这样在工作开始时克隆 git repo
请注意,我需要凭据。
为了减少执行时间和下载数据大小,我想git archive
用git clone
.
如果我完成了正确的 ssh-key 配置,则前面的命令有效。我的服务器上不是这种情况,所以我需要使用凭据。
如何使用 Jenkins 定义的凭据存档而不是克隆 repo?Git 安装在 gitolite 服务器上
git - 将更改和添加的文件从没有工作树的裸仓库导出到目录以进行编译或部署
我有一个裸仓库,开发人员将他们的修补程序分支从他们在 Windows 上的本地仓库推送到。当分支被推送时,我会触发一个钩子来在 Linux 上构建他们的更改。如果我为分支创建工作树,这很容易做到。然而,repo 包含数十个数千个文件,并且让每个开发人员的修补程序分支为所有对象创建一个工作树,而他们只对少数几个对象进行更改,这会耗费大量时间并消耗文件系统。
有没有办法让开发人员推送到裸仓库,然后在挂钩中仅将更改的源提取到目录结构,以便我可以进行有效的构建过程?
想法?
示例 developer_a 将他从 Dev 分支分支出来的 HF1 分支推送回 Linux 构建服务器上的远程裸仓库。
如果我执行 HF1 和 dev 分支的“git diff”,我可以看到已更改的文件列表。
diff-tree -r --no-commit-id --name-only HF1..dev
/APP/SOURCE/Program1.cbl
在上述命令中使用该文件的任何尝试都会失败,因为工作树不存在。
我想生成这个 diff,然后直接从 repo 中提取 diff 中列出的文件到目标目录。
git - 无需提交即可从 repo 创建 git 存档
有git archive
命令 - 有没有一种方法可以在不提交的情况下从 repo 创建一个 tarball?本质上,我只想创建现有文件的压缩包(更重要的是尊重 gitignore)。我假设 git archive 正在寻找提交 - 但我只想要代码的快照,即使是未提交的更改。
另一种方法是编写一个程序,它将所有文件 tar 并忽略 gitignore 中的内容,但这需要编写该程序。
git - 如何使用 git archive 保存时间戳
我使用 post-commit 脚本将“git archive”到临时目录,然后我使用 Rsync 将更改的文件移动到我的 dev 工作目录。我正在使用 rsync 保留时间戳,但是 git archive 命令将所有时间戳更新为当前日期和时间,所以一切都被推送了。根据文档(引用如下),只有在我传递树 ID 而不是提交 ID 时才应该这样做。我没有通过任何东西。
我要复制到 temp 的 git archive 命令:
这是文档中的内容:
“git存档在给定树ID与给定提交ID或标签ID时的行为不同。在第一种情况下,当前时间用作存档中每个文件的修改时间。在后一种情况下,提交时间记录在使用引用的提交对象。此外,如果使用 tar 格式,则提交 ID 存储在全局扩展 pax 标头中;可以使用 git get-tar-commit-id 提取它。在 ZIP 文件中,它存储为文件评论。”
这是否意味着我需要获取提交 ID 并将其传递给 git 存档?我怎么做?
我有点困惑?如何在不更改时间戳的情况下存档到我的临时目录?
谢谢。
编辑:我也试过这些无济于事:
和
我不确定正确的语法是什么。也许这比我想象的要容易?