首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我要用git工作树做什么?

我要用git工作树做什么?
EN

Stack Overflow用户
提问于 2015-08-11 07:32:34
回答 10查看 102.6K关注 0票数 309

我读过Github在git-worktree上的文章。他们写道:

假设您在一个名为feature的分支上使用Git存储库,当用户在master中报告一个高度紧急的bug时。首先,您将创建一个具有新分支hotfix的链接工作树,它相对于主…签出。您可以修复错误,推送修补程序,并创建一个拉请求。

当我处理一个名为feature的分支,并且报告了Master中的一些高度紧急的bug时,我通常会隐藏我正在做的任何事情,并创建一个新的分支。当我做完了,我可以继续工作。这是一个非常简单的模型,我已经像这样工作了很多年。

另一方面,使用git-worktree也有其自身的局限性:

例如,不允许同时在两个链接的工作树中签出相同的分支,因为这将允许在一个工作树中提交的更改使另一个不同步。

为什么我要为一个已经解决的问题选择一个更复杂的工作流?

关于git-worktree ,有什么是事先做不到的,并且证明了这个全新的、复杂的特性是正确的?

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2015-08-11 20:19:49

对我来说,git工作树是很长时间以来最大的改进。我在企业软件开发部门工作。在那里,非常常见的情况是,您必须维护老版本,如您3年前发布的版本。当然,每个版本都有一个分支,这样您就可以轻松地切换到它并修复一个bug。然而,切换是昂贵的,因为在此期间,您完全重组了存储库,并可能构建系统。如果您切换,IDE将疯狂地尝试调整项目设置。

使用工作树,您可以避免常量的重新配置。使用工作树在单独的文件夹中签出这些旧分支。对于每个分支,您都有一个独立的IDE项目。

当然,这可以通过克隆回购在过去几次,这是我的方法到目前为止。然而,这也意味着浪费hardrive空间,更糟的是,需要多次从回购中获取相同的更改。

票数 317
EN

Stack Overflow用户

发布于 2015-08-11 07:45:18

我能看出这有什么用。

如果您有一个运行了很长时间的测试套件,想象一下几个小时,然后启动它,它会有效地阻止该工作副本,直到测试完成为止。在这些测试中切换分支会以难以理解的方式破坏它们。

因此,有了git-worktree,我可以为另一个在那里工作的分支提出第二个想法。

另外,当我切换到其他分支做一些快速调查时,我的IDE认为很多文件突然改变了,并且会索引所有这些更改,只是在切换回我的时候必须重新索引它们。

第三个用例是使用git-diff以外的其他工具(如普通diff )在两个目录之间进行文件比较,如果是两个分支的话。

票数 97
EN

Stack Overflow用户

发布于 2015-09-29 17:27:51

一个明显的用途是同时比较不同版本的行为(非源)--例如,不同版本的网站或只是一个网页。

我在本地试过这个。

  • 创建一个目录page1
  • 在内部创建目录srcgit init it。
  • src中,创建带有少量内容的page1.html并提交它。
  • $ git branch ver0
  • $ git worktree add ../V0 ver0
  • src中,母版向page1.html添加更多文本并提交它。
  • $ git branch sty1
  • page1.html分支中编辑sty1 (添加一些独特的CSS样式)并添加提交。
  • $ git worktree add ../S1 sty1

现在您可以使用web浏览器同时打开和查看这三个版本:

  • ..\page1\src\page1.html //任何git当前的
  • ..\page1\V0\page1.html //初始版本
  • ..\page1\S1\page1.html //实验样式版本
票数 80
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31935776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档