2016-10-27 37 views
1

我最近创建了一个存储库。我在其中制作了两个分支,masterdev。现在,当我将文件复制到存储目录中时,文件将被添加到两个分支。但我只想将文件添加到dev分支,然后在dev完成工作后,我会将dev的文件夹中的内容复制到master's文件夹中。不幸的是,这两个分支被git认为是相同的文件夹。如何在git中的不同文件夹中有不同的分支?

那么如何在git中的不同文件夹中有不同的分支?

+0

在同一个存储库中,你不能有一个目录版本分支'master'的,并在同一时间有另一个目录版本分支'dev' **和**都有两个目录签出。您只能检出一个分支,并将删除其他分支的目录。 – j6t

+0

*“现在,当我将文件复制到存储目录中时,这些文件将被添加到两个分支中。”*这是不正确的。我认为你需要再玩一些。 –

+0

@JeffPuckettII通过_added_我的意思是,当我检查是'master'的或''dev'混帐status'那么这两个分支说你有需要提交前要添加不分级的文件。我希望复制的文件仅在dev分支中进行提交。 – user31782

回答

0

你的问题有点不清楚你需要什么,但git支持submodule,它允许你的存储库有一个子文件夹,这是另一个存储库。

这将允许您只更改存储库的一个子文件夹中的内容,而不会影响您的根存储库。

您可以有两个仓库,有两个分支中的每个人:

库主要项目

main-master 
main-dev 

库库

library-master 
library-dev 

在仓库:

- main-master 
    - app 
    - modules 
    - lib --> git checkout library/lib-master 

- main-dev 
    - app 
    - modules 
    - lib --> git checkout library/lib-dev 

这种结构可以让你签main-master,并有lib子文件夹的正确版本。

与此同时,如果您clone分支main-dev到另一个目录,它将带来只有正确的内容。

checkout根分支支行,尝试:git clone <repo>:main-master --recursive

如果这是你需要什么,你可以看到更多关于它的Git Documentation

或在这里StackOverflow

我不确定这是你在找什么,但我希望它有帮助。

+0

这对我来说太复杂了。如果我删除我的本地存储库并克隆C目录中的远程'master'分支并克隆D目录中的'dev'分支? – user31782

+0

然后,你将有他们究竟在文件夹C和D.相同的,如果你想他们是不同的,你必须有两个分支在'root'库,他们每个人从'submodule'指向不同的'hash' (子文件夹) - 这是另一个存储库。 – Tom

+0

假设在一个项目中有两个分支“前端”和“后端”。前端分支仅包含静态html页面,而后端分支包含动态php页面。我下载'frontend'分支,然后就像你说的那样,它也会包含'后端'的php文件。是不是有一种简单的方法来从这个下载的仓库只复制前端html文件? – user31782

2

从您的评论

假设在一个项目的判断有两个分支frontendbackend。 前端分支只包含静态html页面,而后端分支包含动态php页面 。我下载前端分支,然后如你所说,它也将 也包含后端的PHP文件。

你严重误解了分支的目的。

根据用途不同,您不使用分支来分隔文件。为此,您通常将它们放在不同的目录中。

您可以使用分支将项目状态与需要一些更改的不同项目状态分开。拿一个你已经完成的网站。它有一组用于前端和后端的文件。你有两个分支master,它运行良好和稳定。现在您决定让主题可定制。这通常需要两组文件中的更改。但是你不想熄灭你网站的当前状态。因此,您创建一个新分支devel并在新分支上进行更改(在两组文件上)。现在,通过检出masterdevel,您可以在网站的稳定状态和开发状态之间来回切换。

2

您可能会喜欢git-worktree。 这允许您检查不同的分支到不同的目录。

E.g.

git checkout master 
git worktree add ../dev dev 
相关问题