如何在git中的不同文件夹中使用不同的分支?

时间:2016-10-27 11:32:16

标签: git version-control branch git-branch

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

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

3 个答案:

答案 0 :(得分:5)

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

E.g。

git checkout master
git worktree add ../dev dev

答案 1 :(得分:3)

根据你的评论判断

  

假设在一个项目中有两个分支frontendbackend。   前端分支仅包含静态html页面和后端分支包含   动态的PHP页面。我下载前端分支,然后你也说   包含后端的php文件。

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

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

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

答案 2 :(得分: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

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