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

use*_*782 2 git version-control branch git-branch

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

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

j6t*_*j6t 7

从你的评论来看

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

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

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

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


kai*_*toy 6

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

例如

git checkout master
git worktree add ../dev dev
Run Code Online (Sandbox Code Playgroud)


Tom*_*Tom 0

您的问题有点不清楚您到底需要什么,但git支持submodule,它允许您将存储库与一个子文件夹作为另一个存储库。

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

您可以有两个存储库,每个存储库都有两个分支:

存储库主项目

main-master
main-dev
Run Code Online (Sandbox Code Playgroud)

储存库

library-master
library-dev
Run Code Online (Sandbox Code Playgroud)

在存储库中:

- main-master
    - app
    - modules
    - lib  --> git checkout library/lib-master
Run Code Online (Sandbox Code Playgroud)

- main-dev
    - app
    - modules
    - lib  --> git checkout library/lib-dev
Run Code Online (Sandbox Code Playgroud)

此结构允许您签出并拥有子文件夹main-master的正确版本。lib

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

对于checkout带有子分支的根分支,尝试:git clone <repo>:main-master --recursive

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

或者在StackOverflow上。

我不确定这是否是您正在寻找的内容,但我希望它有所帮助。