我需要在不同的计算机上保持我的开发树同步,它们之间没有网络连接.
我们有一个中央git存储库,我通常在办公室计算机上使用自己的克隆.有时我需要在另一台从未连接到办公室网络的计算机上进行一些开发.没有任何计算机连接到Internet.可以在同步之间在两台计算机上执行开发.
我已经阅读了git-bundle的帮助页面,这似乎是最好的工具,但我不确定如何设置好的工作流程.
你能给我一些建议或指点吗?
海兰!
有没有办法获得存储在git包中的所有提交的列表而不首先克隆它?
获得头脑很容易,但我找不到一种方法来获得完整的注销.
如何捆绑 git 项目而不需要每次都克隆它?现在我总是执行下面的命令。
git clone --mirror http://git_project
cd git_project
git bundle create '../git_project.lock' --all
cd ..
rm git_project -Force -Recurse
Run Code Online (Sandbox Code Playgroud)
我想用一个命令来完成此操作,例如:
git bundle create '../git_project.lock' --all --repository http://git_project
Run Code Online (Sandbox Code Playgroud) 我有两个房间,我使用git维护一些源代码,大多数开发发生的"开发"房间和我们实际使用软件的"部署"房间.部署室中也不可避免地发生了一些变化.我希望两个房间在git中分享相同的历史.
限制:
将更改移动到部署室是很简单的git bundle,并跟踪我们移动到部署室的最后一次提交.由于纯文本限制,将更改移出房间更加困难.
目标:在两个未连接的房间之间来回移动,就像发生git pull了一样,即两个房间中的SHA1哈希相同.
至今:
我已尝试git format-patch将更改从部署移回dev,但这不记录合并,因此需要为每个连续的更改集生成不同的补丁集以及如何重现精确合并提交的一些记录发生在两者之间.有一些关于为合并提交制作差异的讨论,但这似乎并没有捕获实际的祖先,只捕获了变化.似乎补丁可能不是足够丰富的格式来提供必要的信息.
可以使用一些bundle-to-text脚本将bundle转换为非压缩和人类可读(ish)格式(然后在下载后再返回)但我没有发现存在这样的脚本的证据.
也许可以编写一个脚本来将历史记录从一些共同的祖先转到最新的提交,并且a)制作补丁或b)重新创建一些众所周知的引用的合并.
回退: 我总是可以将从部署室出来的提交压缩成一个原始补丁并打破历史记录,但是从dev-> deploy进一步下载会破坏任何现有的工作副本.不理想.
更新:
我相信git fast-export可能会做我需要的东西,虽然大多数例子都有它在整个存储库上工作,而不是像部分历史git bundle.我有一个工作的玩具示例,我可以将部分历史记录导出到一个过时的克隆,但它需要我手动编辑快速导出输出,以便我添加from <sha1>到第一个提交.如果没有这个修改,导入会创建不同的sha1,然后抱怨Not updating refs/heads/master (new tip <hash> does not contain <master's hash>).
Update2:
我的git fast-export解决方案确实有效,但它有带宽问题,因为它通过提供全新文件而不是以前文件的差异来工作.这是不可接受的,因为我实际上必须阅读所有这些额外的行.
我收到了多个 git bundle 文件,并希望将所有这些文件合并到一个存储库中。
我知道该命令git clone myfile.bundle将从捆绑文件中创建一个 repo,然后我可以将其与所有其他文件合并在一起,但我想知道是否有一种组合多个捆绑文件的方法。
我希望将 git 存储库存档到客户端的常规文件服务器。
以前我曾经git bundle create [path] --all
这样做过,而且效果很好。
但是,此存储库使用 Git LFS,并且 LFS 文件不包含在使用上述命令创建的包中。
我刚刚通过电子邮件收到了一个 Git 包。我如何解开它才能阅读它?我在使用 unbundle 命令时遇到问题。我试过了
git unbundle *bundle name*
Run Code Online (Sandbox Code Playgroud)
但这给了我一个奇怪的代码
eae0b00697e53cd87c871143051673f3ee413148
Run Code Online (Sandbox Code Playgroud)
和 refs/heads/master
我需要从 gitlab 备份中恢复一些存储库。此备份包含所有存储库的 .bundle 文件。如何恢复包含所有分支的完整存储库?
如果我跑,git bundle list-heads myfile.bundle我可以看到所有的分支。
我想使用所有分支在本地恢复该 repo,以将其推送到新的/空的 gitlab 存储库。
我尝试使用 git clone、git pull 我能找到的所有其他技巧,但这只会导致一个只有 master 分支的 repo。