git worktree非常方便
我希望可以同时并行开发多个分支。
有没有这样的情况?
-
- アサインされた開発チケットが複数あり、並行して開発している
-
- 運用が挟まり、developブランチの内容を確認したい
-
- 仕様待ちになったので、他チケットに着手したい
- コードレビュー待ちの間は他の開発をしていたが、レビューの指摘が来たので対応したい
Git stash非常实用,但每次都进行很麻烦,而且再次反映stash的内容时也担心会出错。
老实说,有没有记不住stash的内容的时候呢?
使用git worktree
因为在上述的情况下,git worktree是非常方便的,所以我来介绍一下。
以下,我将以下列的方式来说明库和分支的步骤。
# リポジトリ
$ tree -L 1
.
└── myrepo
# ブランチ
$ git branch
main
* develop
feature/t1
操作流程
确定worktree的目标分支
在这里我们将使用feature/t1分支。
决定创建工作树的目录
在这里,将目录设置为dir_t1。
在git worktree中,我们需要选择一个目录来创建worktree,并在其中指定工作分支以获取源代码。
操作类似于执行两次git clone。
创建工作树。
执行下面的命令:
关键在于与目标仓库并行创建工作树。
通过这样做,可以避免在搜索源代码时出现多个匹配项,使情况变得混乱。
$ git worktree add ../dir_t1 feature/t1
# ↑ ../ とすることで、並列に作成しています
在这种状态下执行git branch命令,工作树上会出现一个加号。
$ git branch
main
* develop
+ feature/t1
4. 移动工作树。
执行cd命令来切换目录。
$ cd ../dir_t1
$ git branch
main
+ develop
* feature/t1
$ tree -L 1
├── myrepo
└── dir_t1
在这个状态下,可以作为feature/t1进行开发。
如果最终决定还是想回到develop分支,请使用cd命令返回。
这个过程中不需要使用git stash,更改内容不会消失。
再增加一个worktree
在feature/t1的工作尚未完成时,可能会有需要开始进行feature/t2的情况。在这种情况下,只需直接增加一个worktree即可。
$ git worktree add ./dir_t2 feature/t2
main
+ develop
+ feature/t1
* feature/t2
$ tree -L 1
├── myrepo
├── dir_t1
└── dir_t2
6. 删除不再需要的worktree。
由于工作树(worktree)已经完成,因此应该删除它。
$ git worktree remove feature/t1
坦白说
如果需要进行环境构建,则需要重新构建。
而且当然,如果端口冲突,服务器将无法启动。
尽管如此,在多个分支并行开发方面,它非常方便,我真希望早些知道它!所以我想向大家介绍一下。