再也不用克隆多个仓库啦!git worktree 一个 git 仓库可以连接多个工作目录

我在 feature 分支开发得多些,但总时不时被高优先级的 BUG 打断需要临时去 develop 分一个分支出来解 BUG。git 2.6 以上开始提供了 worktree 功能,可以解决这样的问题。

阅读本文将了解使用 git worktree 高效进行并行开发的方法。


git worktree 从一个仓库中可以创建多个工作目录,方便多开编辑器并行开发。

快速上手

git worktree add -b <新分支名> <新路径> <从此分支创建>

例如,你正在某个 feature 分支开发,希望从 master 分出一个分支来解决某个紧急的 BUG:

git worktree add -b t/walterlv/bugfix-100 ../Demo.bugfix master

这样,原本的仓库文件夹的同级目录下会出现一个 Demo.bugfix 文件夹(当然名字随便取)。这个仓库里只有一个 .git 文件用来记录这是主仓库的一个工作目录。

自此,这两个工作目录在工作上看起来就像两个独立的仓库一样,都可以运行各种命令,包括切换分支。

相比于克隆多个仓库,使用这种方法创建的多个目录,有诸多好处:

  1. 只有一个仓库会占用版本库的空间,其它只占用工作目录的空间,对大型项目而言非常节省空间。
  2. 因为所有工作目录共享一个仓库,所以一个更新意味着整个更新(A 目录里对分支做的改动,B 目录里切到此分支也是改动后的;避免到时候找不到某个未推送的改动改到了哪个仓库)

注意事项

使用 git worktree 创建的多个目录,不能有任何两个目录在同一个分支下——原因应该不言自明。

如果要删除其中一个工作目录,直接删除文件夹即可。随后使用命令清除多余的已经被删的工作目录:

git worktree prune
### 更改Git仓库目录路径 当需要更改Git仓库目录路径时,可以按照以下方法操作: 移动整个项目文件夹到新的位置是一个简单有效的方式。假设当前有一个位于 `/old/path/to/repo` 的Git仓库,并希望将其移至 `/new/path/for/repo`。 #### 移动仓库并更新工作区配置 执行实际迁移前,请先确保没有任何未提交的工作或挂起的操作正在进行中。接着,在终端里输入如下命令来完成转移过程[^1]: ```bash mv /old/path/to/repo /new/path/for/repo cd /new/path/for/repo ``` 为了使新位置生效,还需要告知本地Git环境这一变化。这一步骤通过编辑 `.git/config` 文件中的 `worktree` 设置实现;然而对于大多数情况而言,默认设置已经足够良好,无需特别调整此参数。如果确实遇到了问题,则可考虑手动修改该配置项指向正确的根目录地址。 另外值得注意的是,假如存在其他开发者共享同一个远程库的情况,那么仅仅改变个人电脑上的副本并不足以让所有人受益于最新的改动。此时应该通知团队成员关于此次变更的信息,并指导他们同步更新各自的克隆版本[^2]。 最后提醒一点,上述做法适用于整体搬迁场景下的处理方式。如果是仅需重命名顶层文件夹而不涉及更深层次结构变动的话,直接利用操作系统自带的功能即可达成目的,而不需要额外干涉内部.git元数据的内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值