再也不用克隆多个仓库啦!git worktree 一个 git 仓库可以连接多个工作目录
2018-01-30 08:44
351 查看
我在
阅读本文将了解使用 git worktree 高效进行并行开发的方法。
git worktree 从一个仓库中可以创建多个工作目录,方便多开编辑器并行开发。
例如,你正在某个
这样,原本的仓库文件夹的同级目录下会出现一个 Demo.bugfix 文件夹(当然名字随便取)。这个仓库里只有一个 .git 文件用来记录这是主仓库的一个工作目录。
自此,这两个工作目录在工作上看起来就像两个独立的仓库一样,都可以运行各种命令,包括切换分支。
相比于克隆多个仓库,使用这种方法创建的多个目录,有诸多好处:
只有一个仓库会占用版本库的空间,其它只占用工作目录的空间,对大型项目而言非常节省空间。
因为所有工作目录共享一个仓库,所以一个更新意味着整个更新(A 目录里对分支做的改动,B 目录里切到此分支也是改动后的;避免到时候找不到某个未推送的改动改到了哪个仓库)
如果要删除其中一个工作目录,直接删除文件夹即可。随后使用命令清除多余的已经被删的工作目录:
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 文件用来记录这是主仓库的一个工作目录。
自此,这两个工作目录在工作上看起来就像两个独立的仓库一样,都可以运行各种命令,包括切换分支。
相比于克隆多个仓库,使用这种方法创建的多个目录,有诸多好处:
只有一个仓库会占用版本库的空间,其它只占用工作目录的空间,对大型项目而言非常节省空间。
因为所有工作目录共享一个仓库,所以一个更新意味着整个更新(A 目录里对分支做的改动,B 目录里切到此分支也是改动后的;避免到时候找不到某个未推送的改动改到了哪个仓库)
注意事项
使用 git worktree 创建的多个目录,不能有任何两个目录在同一个分支下——原因应该不言自明。如果要删除其中一个工作目录,直接删除文件夹即可。随后使用命令清除多余的已经被删的工作目录:
git worktree prune
相关文章推荐
- 如何将一个已存在的目录转换为一个 GIT 项目并托管到 GITHUB 仓库
- git 克隆一个新仓库
- 如何只克隆git仓库中的一个分支?
- Git使用手册/Git教程:git clone 克隆下载远程仓库项目工程到本地工作区
- 使用 eclipse+egit 将项目提交至 github ,本地的git仓库:eclipse工作项目目录
- 我如何添加一个空目录到Git仓库?
- 克隆git仓库中的一个分支
- 1.说说你个人理解的存储解决方案的发展趋势,作图描述。 11.png 2.画一张说明ASM实例同数据库实例协同工作的原理图,并给出语言描述。 14.png 一个监听器可以为多个实例
- 如何将一个已存在的目录转换为一个 GIT 项目并托管到 GITHUB 仓库
- GIT 版本控制软件的常用命令记录每次更新到仓库 现在我们手上已经有了一个真实项目的 Git 仓库,并从这个仓库中取出了所有文件的工作拷贝。接下来,对这些文件作些修改,在完成了一个阶段的目标和使用方法
- 使用git工具,在本地建立一个数据仓库,保存日常工作日志
- 如何添加一个空目录到Git仓库?
- 推荐一个小工具:ftree 可以列出ftp server的目录树
- git clone 远程仓库上的某个分支,指定克隆到本地的repo目录名
- git 将一个本地文件目录提交到远程仓库的步骤
- 解压MongoDB到一个目录,不知道什么原因就连接不上了,重新解压一份的同时更换目录名称,就可以正常使用了
- 如何将一个已存在的目录转换为一个 GIT 项目并托管到 GITHUB 仓库
- sourcetree 打开报错,路径...不是一个有效的Git仓库工作副本
- 我如何添加一个空目录到Git仓库?
- git一个本地仓库连接多个远程仓库