使用未连接的git仓库的智能方式

时间:2015-06-23 15:42:02

标签: git fork disconnected

支持客户,他们发送他们的代码库并要求修复它,在他们发送的zip中通常有一个.git文件夹,我可以用它来查看他们一直在做什么,通常是几个提交和一些新的分支我最后一次看到它。

我情不自禁地觉得我应该能够合并我不时收到的zip文件中的.git文件夹和repo的本地副本我可以保留我用来支持它们的任何历史记录,测试工具等。

客户不会使用git hub之类的东西。

我确信git可以处理它,但我想不出符文。实际上,我希望它能够为我上次看到回购时的所有内容创建补丁并“回放”我的回复。

3 个答案:

答案 0 :(得分:2)

假设您拥有"工作副本"在/home/me/clientversion

您可以创建一个新的(空)目录/home/me/project 在此目录中解压缩zip存档的最新副本。

git remote add client /home/me/clientversion ,您可以添加指向该目录的遥控器:

git fetch client

然后执行project

clientversion的主题中,您现在会在client/branch_name中看到分支的状态,作为对clientversion的引用。

你甚至可以拉动,合并,跟踪遥控器......

要进行更新:从project执行git fetch client解压缩git bundle内的新zip档案。

-

注意:正如其他答案中所建议的,echo "id: " . $row["id"]. " - Name: " . $row["title"]. "<br>"; 将为您提供更清晰的方式来管理同样的事情。

答案 1 :(得分:1)

你可以让他们导出他们的存储库 - 或者它的一部分 - 作为git包。见http://git-scm.com/docs/git-bundle

命令

git bundle create filename master

创建一个名为filename的文件,其中包含一个捆绑的存储库,最多包含master标记的修订版。通过在命令行上列出它们,可以包含多个分支/提示:

git bundle create filename master develop bugfix-mybug

然后您可以将捆绑包作为远程添加到本地存储库中并从中拉出来:

git remote add some-remote-name filename
git fetch some-remote-name
git merge some-remote-name/master

如果您知道目标存储库已经有一些提交,您可以通过指定包的基本提交或基于时间来导出部分包。命令:

git bundle create mybundle --since=10.days master
git bundle create mybundle version1...master

将创建包括重建主分支所需的所有提交的包,假设包的使用者分别具有10天前版本的master或者标记/分支version1指向的提交< / p>

当客户端生成一个新的捆绑供您使用时,只需替换该文件并再次运行git fetch some-remote-name

答案 2 :(得分:1)

您可以treat the repository as a remote repository并从那里提取更改,您可以将其与您的分支合并,也可以将您的分支重新绑定。

移动zip文件并不是最有效的传输方式,但它可以正常工作。传输.git目录就足够了,您可以在压缩它之前使用git gc来节省空间。

在另一个方向,您可以使用git bundle创建仅缺少部分的,这将更容易合并。