问题标签 [sparse-checkout]
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 sparse-checkout
我正在尝试弄清楚如何执行以下操作(并弄清楚它是否可能)。
我有一个本地 git 存储库,其中包含许多用于各种事物的文件夹,但我希望能够使用 git 将我的网站部署到我的开发服务器,并且实际上只有一个文件夹的内容应该进入远程 webroot(只是文件夹,而不是文件夹本身,这很困难)。我让开发服务器的 git push 进入 Web 可访问文件夹之外的裸仓库,然后我使用接收后脚本将所有工作文件放入 webroot。但是,这会复制所有文件夹,显然我只希望在操作完成后移动一个特定文件夹的内容。
做一些研究,看起来稀疏结账会很合适。更新:我现在让它工作,它只会复制一个特定的文件夹,但我仍然没有让它忽略文件夹本身并只是拉取内容。我认为这与我添加到 .git/info/sparse-checkout 的路径/通配符有关,但我不确定排除目录但不排除其内容的模式是什么。
有没有好的方法来做到这一点?我应该只使用 post-receive 脚本手动复制我想要的目录的内容,而不是尝试直接使用稀疏结帐来完成吗?
我感谢任何人愿意提供的任何帮助。谢谢!
git - git 将旧存储库的一部分移动到新存储库
我有一个存储库,它在根目录下包含多个目录,例如
我想仅从 a 的内容创建一个新的 git 存储库,同时保留其历史记录。这可能吗?我已经看到了稀疏的结帐,但我不确定如何使用它从子目录创建一个全新的存储库(具有相关历史记录)。
git - git sparsecheckout - 如何拉入不同的目录
我正在使用 pootle 来允许人们在 PHP Yii 项目中翻译 .po 文件。
一旦翻译者更新了 .po 文件,Pootle 就可以拉取和推送翻译。另外,我们有开发人员在网站上工作,他们也可能会更新翻译文件以添加更多要翻译的文本。
Yii 要求 .po 文件位于:
yii-project/protected/messages/en_gb/messages.po
Pootle 要求目录结构为:
pootle/yii-project/en_GB/messages.po
为了让 pootle 拉和推,.git 目录需要在 pootle/yii-project/.git 中。
我曾尝试使用 git sparse checkout,但这会将文件拉入 pootle/yii-project/protected/messages/en_gb/messages.po 不幸的是 pootle 没有收到。
我无法在其他地方提取存储库然后进行软链接,因为那时 pootle 将无法找到 .git 目录。
我真正想做的是一个目录的稀疏检出并将结果映射到另一个目录,即检出:
pootle/yii-project/protected/messages/ -> pootle/yii-project
我不想使用 git-subtree,因为我希望开发人员或翻译人员能够更新文件。我不想使用子模块,因为我不喜欢额外的拉动开销,我们希望开发人员在一次提交中包含与新功能有关的所有更改(而不是在主项目上的一次提交和一个在子模块上)。
有什么建议么?
java - 如何在 JGit 中实现稀疏结帐?
我需要在 Github 存储库中提取特定子目录的内容并将其放在我自己的目录下。经过大量研究,似乎稀疏的结帐是要走的路。但是,我有点不确定,如何使用 JGit 来实现它。
git - 混帐结帐。添加稀疏结帐排除的目录
在稀疏签出场景中,该命令git checkout .
恢复应该被忽略的目录。这是设计使然,还是 Git 中的潜在问题?我git checkout .
用来丢弃我对工作副本所做的任何更改——是否有另一个命令可以做同样的事情并且不会遇到这个问题?
这是一个可重现的示例:
到现在为止还挺好。这是问题所在:
顺便一提:
问题为什么排除的文件不断重新出现在我的 git sparse checkout 中?是相关的,但年龄更大,并不能完全描述我所看到的。
git - 如何 git reset --hard 一个子目录?
更新²:使用 Git 2.23(2019 年 8 月),有一个新命令
git restore
可以执行此操作,请参阅接受的答案。更新:从 Git 1.8.3 开始,这将更直观地工作,请参阅我自己的答案。
想象以下用例:我想删除 Git 工作树的特定子目录中的所有更改,而保留所有其他子目录不变。
我可以
git checkout .
,但是git checkout 。添加稀疏结帐排除的目录有
git reset --hard
,但它不会让我为子目录这样做:我可以使用 反向修补当前状态
git diff subdir | patch -p1 -R
,但这是一种相当奇怪的方法。
此操作的正确 Git 命令是什么?
下面的脚本说明了这个问题。在注释下方插入正确的命令How to make files
——当前命令将恢复a/c/ac
应该被稀疏检出排除的文件。请注意,我不想显式恢复a/a
and a/b
,我只“知道”a
并想恢复下面的所有内容。编辑:而且我也不“知道” b
,或者哪些其他目录与a
.
git - Git 稀疏检出后工作副本中的目录过多
我们有一个 git repo (远程托管在 github - 我们称之为 Clients repo),根目录中有 210 多个目录。我们有 210 多台 Windows 服务器,每台服务器都需要其中一个根目录,而实际上并不需要其他根目录。
所以我们登录到其中一台服务器,并使用1.8.1.msysgit.1
- 从 git hub 克隆客户端 repo
- 打开稀疏结帐
- 使用我们希望在此服务器工作副本中的单个 *directory/* 更新稀疏签出文件
- 执行我们的读树操作
10 次中有 9 次一切正常,并且工作副本包含我们期望的单个目录。
然而,每隔一段时间,它就不会像预期的那样工作,我们也会得到一些其他目录流到工作副本中。它从来都不是完整的 210+,但会在 6-10 个其他目录之间。这些目录与所需目录的模式不匹配,也没有与所述模式匹配的任何子目录。
一旦发生这种情况,我们就永远无法解决本地 repo。我们尝试过:
- 各种复位
- 各种读树
- 禁用/重新启用稀疏结帐
- 检查日志以查看是否发生了任何奇怪的事情
最终,我们通常最终会删除本地 repo,再次执行相同的步骤,并且它只是第二次工作。
除了重复克隆、设置稀疏签出等之外,我们还没有找到可靠地重现该问题的方法。在这种情况发生的 20 次左右中,它只在非 Windows 机器上发生过一次(我们有一个运行 git v1.8.1.5 的 ubuntu 服务器,两周前显示了同样的问题)。
我的 Google-Fu 在这方面很弱。我希望能深入了解为什么会发生这种情况,以及任何不让我们删除存储库并重新克隆它的潜在解决方法。提前致谢!
windows - 为什么 git sparse checkout 会留下目录?
一些背景知识: 我公司的服务模式最初是基于设备的服务器模式。我们将向我们的客户发送一台装有 Windows Server 2003/2008 的服务器,预装了一个网络服务器和我们的软件。我们将所有客户端特定的配置移至 Git 存储库,并使用 sparse-checkout 使每个服务器仅包含客户端软件正常运行所必需的内容。
在设置稀疏结帐时,我们遇到了巨大的不一致。干的好
预期的结果是
但我们得到
我已经尝试了多次,每次都在一个新目录中,每次都出现问题。我的 ju-git-su 在这里失败了。我们使用的是 git 版本 1.8.1.msysgit.1。
感谢您的帮助,如果我需要提供更多信息,请告诉我。
---编辑1---
澄清:存储库只是我们客户的配置目录。每个客户端在存储库中都有一个不同的目录,我们试图在每个客户端的单独服务器上进行稀疏检出,因此我们试图排除除了有问题的客户端之外的所有内容。
---编辑2---
只是一个更新,结果证明它是 Windows 文件夹权限的问题,Git 试图删除非空目录。通过删除空文件夹来修复它。感谢您提供帮助的所有尝试!
git - multiple git subtrees from multiple repos, offsetting the directory layout
say I have 2 different git repos:
so far I only managed the following (with sparsecheckout):
But I'd really like to be able to assemble them in the following fashion:
and still be able to commit changes in work-repo/dir11 back to repo-1/dir11, ditto for /dir22 and /dir23.
is it possible to achieve such a thing with git-subtree ? (or any other git extension/command)
c# - 签出后使用空深度更新存储库
我正在使用 SharpSVN。如何将 Checkout 方法逻辑拆分为两个步骤:
- 创建一个空的svn文件夹
- 更新 HEAD 修订版
这是我如何做SvnDepth.Empty
参数的第一步
但是,如果我尝试像这样更新:
我没有更新。svn 服务器上的存储库不为空。
所以问题是:在使用 Empty 深度进行 Checkout 后,如何正确更新到最新版本。