Git Worktree 让你再也无需切换分支!

开发 前端
如果你正在审查多个分支的代码,可以在单独的 worktree 中检出每个分支。这样可以快速的在它们之间切换,而无需每次都执行检出的操作。

Hello,大家好,我是 Sunday。

让我们假设一个场景:

你正在某个分支中处理一个名为“feature”的功能,突然之间需要在主分支(master)中修复一个关键性 bug。

如果没有使用 git worktree,那么你必须:

  1. 在功能分支(feature)中存储或提交更改
  2. 切换到主分支(master),在主分支中修复错误,提交修复
  3. 切换回功能分支,然后取消存储或检出更改。

特别是如果你需要多次来回切换,这就显得很麻烦了。

但是 如果使用了 git worktree 那么整个操作的流程就会变得更加简单。你可以直接拥有 feature 和 master 两个分支的单独工作目录 并且可以分别在不同目录之间完成开发工作,不再需要进行来回切换

使用 git worktree 完成修复工作

假设你目前在 feature 分支上,正在处理项目的开发工作。突然间,你需要在主分支上修复一个错误。

那么此时你可以使用以下命令为主分支创建一个新的工作树(worktree):

git worktree add ../bugfix master

该命令在当前存储库的相对路径 ../bugfix 处创建一个新目录,并在该目录中签出主分支。现在,你可以转到 bugfix 目录并修复 bug:

cd ../bugfix

你在这里进行的任何更改都将在主分支上进行,并不会影响其他分支。一旦完成了bug修复,则可以直接提交你的更改:

git commit -am "修复 bug"

现在,你可以返回到原工作目录并继续在原分支(feature)上完成之前的工作:

cd ../feature

在原分支(feature)中的完成过的代码依然存在,并且你不需要进行额外的存储和切换分支的操作。

这就是使用 git worktree 完成日常工作的操作流程,它 允许我们同时在多个分支上工作,并且每个分支都有自己的工作目录

让我们把整个过程梳理一遍:

## Push 操作

# 从 bugfix 目录提交 bugfix 分支
cd ../bugfix
git push origin master

# 从 feature 目录提交 feature 分支
cd ../feature
git push origin feature


## Merge 操作

# 切换分支到 master
cd ..
git checkout master

# 合并代码到 master
git merge master

# 合并到 feature
git merge feature

## 删除操作

git worktree remove ../bugfix
git worktree remove ../feature


## 将合并后的更改推送到远程仓库

git push origin master

git worktree 带来的其他好处

除了上述场景之外,git worktree 还有很多其他好处:

  1. 代码审查: 如果你正在审查多个分支的代码,可以在单独的 worktree 中检出每个分支。这样可以快速的在它们之间切换,而无需每次都执行检出的操作。
  2. 持续集成/部署: 如果你有一个需要同时处理同一存储库的多个分支的 CI/CD ,git worktree 可以让每个分支都在自己的 worktree 中,避免冲突。
  3. 长时间运行的任务: 如果你有一项长时间运行的任务(例如:测试套件或代码构建),你希望在一个分支上运行该任务的同时继续在另一个分支上工作,可以在一个目录中运行任务并在另一个目录中工作。(好吧,或许我不该告诉大家这个,因为本来这个时间你可以愉快地摸鱼的,哈哈)
责任编辑:武晓燕 来源: 程序员Sunday
相关推荐

2024-10-28 00:00:25

GitCIfeature

2022-03-18 09:45:43

Git分支Linux

2021-12-02 07:50:29

分支服务git worktre

2012-07-23 13:09:33

加密密码

2021-11-24 07:56:56

Git分支命令

2014-08-08 10:20:23

Git版本管理系统

2022-07-13 09:05:19

C++Git 分支测试

2022-05-25 16:51:41

Git 分支重命名开发者

2023-10-09 08:39:33

Git Flow分支管理模型

2022-11-07 08:01:18

Git分支管理

2022-10-26 09:22:19

git命令Linux

2021-01-04 13:40:59

Git开源工具

2023-12-01 11:05:29

Git 分支

2020-07-09 08:00:25

Git分支模式

2018-06-08 09:27:08

GitLinux开源

2021-03-28 17:21:15

Git分支策略

2020-06-28 16:07:03

HomebrewMacLinux

2020-05-28 10:45:31

Git分支合并

2022-08-11 15:45:13

Git

2011-03-30 10:50:55

GitLinux 版本控制
点赞
收藏

51CTO技术栈公众号