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

坦白说

如果需要进行环境构建,则需要重新构建。
而且当然,如果端口冲突,服务器将无法启动。

尽管如此,在多个分支并行开发方面,它非常方便,我真希望早些知道它!所以我想向大家介绍一下。

 

那么克隆两次就好了,这个意见是合理的。在这里也讨论了这个区别。由于我想传达这篇文章是有用的,所以我没有仔细调查详情。
广告
将在 10 秒后关闭
bannerAds