再也不用克隆多个仓库啦!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 文件用来记录这是主仓库的一个工作目录。
自此,这两个工作目录在工作上看起来就像两个独立的仓库一样,都可以运行各种命令,包括切换分支。
相比于克隆多个仓库,使用这种方法创建的多个目录,有诸多好处:
- 只有一个仓库会占用版本库的空间,其它只占用工作目录的空间,对大型项目而言非常节省空间。
 - 因为所有工作目录共享一个仓库,所以一个更新意味着整个更新(A 目录里对分支做的改动,B 目录里切到此分支也是改动后的;避免到时候找不到某个未推送的改动改到了哪个仓库)
 
注意事项
使用 git worktree 创建的多个目录,不能有任何两个目录在同一个分支下——原因应该不言自明。
如果要删除其中一个工作目录,直接删除文件夹即可。随后使用命令清除多余的已经被删的工作目录:
git worktree prune												
											再也不用克隆多个仓库啦!git worktree 一个 git 仓库可以连接多个工作目录的更多相关文章
- 从一个git仓库拷贝到另一个git仓库
		
利用git从一个仓库拷贝一个项目到另一个仓库,并且log也能够一起过去. 1.从原地址克隆一份裸版本库,比如原本托管于 GitHub. git clone --bare http://github.. ...
 - 从一个git仓库迁移到另外一个git仓库
		
1 从原地址克隆一份裸版本库,比如原本托管于 GitHub. git clone --bare git://github.com/username/project.git git操作的结果会有一个XX ...
 - git使一个非仓库型的工程可以推送
		
git config receive.denycurrentbranch false
 - [git]查看一个git项目的仓库位置
		
项目文件夹的根目录下查找.git文件夹.打开config文件,里面的remote部分就是: [core] repositoryformatversion = 0 filemode = false ba ...
 - Git worktree 使用笔记【转】
		
gitworktree 本地仓库的多个分支在对应的文件夹内管理,能够减少很多操作,便捷高效~ 一 worktree 的基本概念和操作 再也不用克隆多个仓库啦!git worktree 一个 git 仓 ...
 - git worktree 使用笔记
		
一 worktree 的基本概念和操作 再也不用克隆多个仓库啦!git worktree 一个 git 仓库可以连接多个工作目录 - walterlv的专栏 - CSDN博客 再也不用克隆多个仓库啦! ...
 - git多个远程仓库
		
1. 前言 用GitHub管理自己的开源项目有几年了,最近一年更新得比较多,仓库也越来越多越来越大.有时候感觉GitHub太慢,尤其是最近感觉更为明显,于是萌生了再找个国内类似GitHub的代码托 ...
 - git 学习记录—— git 中的仓库、文件状态、修改和提交操作等
		
最近开始学习使用版本控制工具 git .学习方式主要通过阅读 git 网站上的 Pro git 和动手实践,使用的系统为 Ubuntu16.04LTS,以及 Windows 8.1. 本文主要关注 ...
 - git详情、git工作流程、常用命令、忽略文件、分支操作、gitee远程仓库使用
		
今日内容概要 git详情 git工作流程 git常用命令 过滤文件 分支操作 git远程仓库使用 可参照:https://www.cnblogs.com/liuqingzheng/p/15328319 ...
 
随机推荐
- C#:手把手教你用C#打包应用程序(安装程序卸载程序)
			
摘要:本文介绍在C#中手把手教你用C#打包应用程序(安装程序卸载程序) 1:新建安装部署项目 打开VS,点击新建项目,选择:其他项目类型->安装与部署->安装向导(安装项目也一样),然后点 ...
 - 对dataframe中某一列进行计数
			
本来是一项很简单的任务...但很容易忘记搞混..所以还是记录一下 方法一: df['col'].value_counts() 方法二: groups = df.groupby('col') group ...
 - 图 Graph-图的相关算法
			
2018-03-06 17:42:02 一.最短路问题 问题描述:在网络中,求两个不同顶点之间的所有路径中,边的权值之和最小的那一条路径. 这条路径就是两点之间的最短路径 (Shortest Path ...
 - WPF 回车转Tab实现跳转
			
1.重写窗体的KeyDown事件 protected override void OnKeyDown(KeyEventArgs e) { if (e.Key == Key.Enter) { // Mo ...
 - cJONS序列化工具解读三(使用案例)
			
cJSON使用案例 由了解了cJSON的数据结构,接口以及实现之后,那么我们来举例说明其使用. 本例子是一个简单的学生信息表格管理,我们通过键值对的方式向json中增加元素信息. 然后可以格式化输出结 ...
 - 08day03
			
一.eclipse的使用 可能是全宇宙最好用的IDE debug 查看执行过程 查看源码 二.模块的常用方法 __name__ __file__ __doc__ 三.函数 参数 参数默认值 可变参数 ...
 - opencv:图像的基本变换
			
0.概述 图像变换的基本原理都是找到原图和目标图的像素位置的映射关系,这个可以用坐标系来思考,在opencv中, 图像的坐标系是从左上角开始(0,0),向右是x增加方向(cols),向下时y增加方向( ...
 - Winform 导航菜单的方法
			
http://blog.163.com/kunkun0921@126/blog/static/169204332201171610619611/ 第一种:使用OutlookBar第三方控件 第二种:使 ...
 - UML_03_类图
			
一.前言 类图是UML结构图,在类和接口的层次上显示设计系统的结构,显示它们的特性.约束和关系等,是定义其它图的基础. 二.类图 如上图,在类图中表示方法如下: 斜体 :抽象类.抽象方法 下划线 :静 ...
 - DLL声明导出函数的两种方式
			
DLL中导出函数的声明有两种方式:一种为在函数声明中加上__declspec(dllexport):另外一种方式是采用模块定义(.def) 文件声明,.def文件为链接器提供了有关被链接程序的导出.属 ...