繁体   English   中英

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

[英]How to have different branches in different folders in git?

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

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

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

例如

git checkout master
git worktree add ../dev dev

从你的评论来看

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

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

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

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

你的问题有点不清楚你需要什么,但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子文件夹。

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

要使用子分支checkout根分支,请尝试: git clone <repo>:main-master --recursive

如果这是您所需要的,您可以在Git文档中看到更多相关信息。

或者在StackOverflow上

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM