我读了Github上git-worktree的帖子。他们写道:
假设您正在一个名为feature的分支的Git存储库中工作,这时用户在master中报告了一个高度紧急的错误。首先,您可以创建一个带有新分支、hotfix、相对于master[…]签出的链接工作树。您可以修复错误、推送hotfix并创建一个拉取请求。
当我在一个叫做feature的分支上工作时,master中报告了一些非常紧急的bug,我通常会把我正在做的东西藏起来,然后创建一个新的分支。当我完成时,我可以继续工作。这是一个非常简单的模型,我已经做了很多年了。
另一方面,使用git-worktree也有其局限性:
例如,不允许在两个链接的工作树中同时签出同一个分支,因为这将允许在一个工作树中提交的更改导致另一个工作树不同步。
为什么我要为一个已经解决的问题选择一个更复杂的工作流?
在git-worktree中,是否有什么东西是事先无法完成的,从而证明了这个全新的、复杂的功能是合理的?
一个明显的用途是同时比较不同版本的行为(而不是来源)——例如,一个网站的不同版本或仅仅是一个网页。
我在当地试过。
创建目录page1。
在里面创建目录SRC和git init它。
在SRC中创建带有少量内容的page1.html并提交。
$ git分支ver0
$ git工作树添加../ V0 ver0
在SRC master中添加更多文本到page1.html并提交。
$ git分支sty1
在sty1分支中编辑page1.html(添加一些独特的CSS样式)并添加提交。
$ git工作树添加../ S1 sty1
您现在可以使用网页浏览器同时打开和查看这3个版本:
.\page1\src\page1.html //任何git当前的内容
.\page1\V0\page1.html //初始版本
\page1\S1\page1.html //实验风格的版本
一个明显的用途是同时比较不同版本的行为(而不是来源)——例如,一个网站的不同版本或仅仅是一个网页。
我在当地试过。
创建目录page1。
在里面创建目录SRC和git init它。
在SRC中创建带有少量内容的page1.html并提交。
$ git分支ver0
$ git工作树添加../ V0 ver0
在SRC master中添加更多文本到page1.html并提交。
$ git分支sty1
在sty1分支中编辑page1.html(添加一些独特的CSS样式)并添加提交。
$ git工作树添加../ S1 sty1
您现在可以使用网页浏览器同时打开和查看这3个版本:
.\page1\src\page1.html //任何git当前的内容
.\page1\V0\page1.html //初始版本
\page1\S1\page1.html //实验风格的版本