我读过Github在git-worktree上的文章。他们写道:
假设您在一个名为
feature的分支上使用Git存储库,当用户在master中报告一个高度紧急的bug时。首先,您将创建一个具有新分支hotfix的链接工作树,它相对于主…签出。您可以修复错误,推送修补程序,并创建一个拉请求。
当我处理一个名为feature的分支,并且报告了Master中的一些高度紧急的bug时,我通常会隐藏我正在做的任何事情,并创建一个新的分支。当我做完了,我可以继续工作。这是一个非常简单的模型,我已经像这样工作了很多年。
另一方面,使用git-worktree也有其自身的局限性:
例如,不允许同时在两个链接的工作树中签出相同的分支,因为这将允许在一个工作树中提交的更改使另一个不同步。
为什么我要为一个已经解决的问题选择一个更复杂的工作流?
关于git-worktree ,有什么是事先做不到的,并且证明了这个全新的、复杂的特性是正确的?
发布于 2015-08-11 20:19:49
对我来说,git工作树是很长时间以来最大的改进。我在企业软件开发部门工作。在那里,非常常见的情况是,您必须维护老版本,如您3年前发布的版本。当然,每个版本都有一个分支,这样您就可以轻松地切换到它并修复一个bug。然而,切换是昂贵的,因为在此期间,您完全重组了存储库,并可能构建系统。如果您切换,IDE将疯狂地尝试调整项目设置。
使用工作树,您可以避免常量的重新配置。使用工作树在单独的文件夹中签出这些旧分支。对于每个分支,您都有一个独立的IDE项目。
当然,这可以通过克隆回购在过去几次,这是我的方法到目前为止。然而,这也意味着浪费hardrive空间,更糟的是,需要多次从回购中获取相同的更改。
发布于 2015-08-11 07:45:18
我能看出这有什么用。
如果您有一个运行了很长时间的测试套件,想象一下几个小时,然后启动它,它会有效地阻止该工作副本,直到测试完成为止。在这些测试中切换分支会以难以理解的方式破坏它们。
因此,有了git-worktree,我可以为另一个在那里工作的分支提出第二个想法。
另外,当我切换到其他分支做一些快速调查时,我的IDE认为很多文件突然改变了,并且会索引所有这些更改,只是在切换回我的时候必须重新索引它们。
第三个用例是使用git-diff以外的其他工具(如普通diff )在两个目录之间进行文件比较,如果是两个分支的话。
发布于 2015-09-29 17:27:51
一个明显的用途是同时比较不同版本的行为(非源)--例如,不同版本的网站或只是一个网页。
我在本地试过这个。
page1。src并git init it。src中,创建带有少量内容的page1.html并提交它。$ git branch ver0$ git worktree add ../V0 ver0src中,母版向page1.html添加更多文本并提交它。$ git branch sty1page1.html分支中编辑sty1 (添加一些独特的CSS样式)并添加提交。$ git worktree add ../S1 sty1现在您可以使用web浏览器同时打开和查看这三个版本:
..\page1\src\page1.html //任何git当前的..\page1\V0\page1.html //初始版本..\page1\S1\page1.html //实验样式版本https://stackoverflow.com/questions/31935776
复制相似问题