Git - 将分支存储在单独的本地目录中
我对git比较陌生,并且试图以正确的方式设置我的存储库。Git - 将分支存储在单独的本地目录中
基本上我的应用程序是一个平台,所以这个平台的实现基于master分支,但对这些文件以及一些额外的文件有一些小的修改。
我试着将它设置为分支,所以我有一个master
分支,implementation_1
和implementation_2
。
但据我所知,这意味着在本地所有的分支都存储在一个目录中,他们的分离只是通过git。
我想要的是有3个本地目录master
,imp_1
和imp_2
。如果我对imp_1
目录中的某个核心文件进行了更改,我希望能够将该更改合并到master
分支中,然后从那里进入imp_2
。
我开始认为这些需要是3个不同的存储库(实现是分支的核心)。这是要走的路吗?在那种情况下,我将如何处理上述情况?
分公司在Git的头等公民,这意味着有没有“模拟”作为老年VCS(SVN,CVS,...)
如果你真的需要三个不同的目录中,因为要像树枝有三个不同的开发环境,使3个克隆:
- 一个在一个叫
master
- 一个在一个名为
imp_1
- 处于一个目录目录目录称为
imp_2
但要真正理解分支,你可以阅读“Pros and cons of different branching models in DVCS”。
或者,因为Git的2.5(2015年7月,任择议定书的问题,后4年),我在Multiple working directories with Git?的相关详细,使用git worktree
。
这将是一个克隆,多个文件夹(每个分支一个)。
使用Git 2.7+,您可以然后列出这些文件夹:
$ git worktree list
/path/to/bare-source (bare)
/path/to/linked-worktree abcd1234 [master]
/path/to/other-linked-worktree 1234abc (detached HEAD)
有没有任何优点和缺点3不同的目录与保持3个分支在同一个本地回购? – 2012-09-23 16:22:35
@ lysergic-acid主要的专业是你可以同时在每个分支上并行工作,因为每个分支都被克隆在自己的目录中。 – VonC 2012-09-23 16:42:45
是的,但是使用单个目录有问题吗?例如,假设我制作了一个实验分支来测试某些东西,并且在工作树中有一些未提交的文件,我是否可以自由签出另一个分支以继续主线工作? (也许这不是最好的例子,但我想看看是否有些东西可能会限制使用单个目录)。 – 2012-09-24 04:11:19
,您可以创建存储库的三个克隆和那些之间的合并。 git中的叉子和它们合并的方式没有什么不同。你可以很容易做到:
git merge ../master
git pull ../imp_2
本地克隆时,git会硬连接的对象,甚至节省磁盘空间
你可以做到这一点使用git worktree这是introduced in Git 2.5, circa July 2015。
git clone -b master <repo> master
cd master
# checking out implementation_1 in ../imp_1
git worktree add ../imp_1 implementation_1
# creating branch implementation_2 at master~2 as you check it out in ../imp2:
git worktree add -b implementation_2 ../imp_2 master~2
而且瞧!你完成了。
使用此设置,您将只有一个.git文件夹(在master/.git中)。请注意,任何分支都可以一次检出一个工作树。
'git-new-workdir'可能会诀窍(请参阅http://thejspr.com/blog/work-on-multiple-branches-with-git-workdir/) – user456584 2014-06-05 21:48:19