use*_*782 2 git version-control branch git-branch
我最近创建了一个存储库.我在里面做了两个分支,master并且dev.现在,当我复制repositry目录中的文件时,文件将被添加到两个分支中.但我只想将文件添加到dev分支,然后在完成工作后,dev我将内容从dev文件夹复制到master's文件夹中.不幸的是,这两个分支被git认为是同一个文件夹.
那么如何在git中的不同文件夹中使用不同的分支?
从你的评论来看
假设在一个项目中有两个分支
frontend和backend。前端分支仅包含静态 html 页面,后端分支包含动态 php 页面。我下载前端分支,然后正如您所说,它也将包含后端的 php 文件。
你严重误解了分支的目的。
您不使用分支根据其目的来分隔文件。为此,您通常将它们放在不同的目录中。
您使用分支将项目状态与需要一些更改的不同项目状态分开。拿一个你已经完成的网站。它有一组用于前端和后端的文件。您在一个分支中拥有两个集合master,并且它运行良好且稳定。现在您决定使主题可定制。这通常需要对两组文件进行更改。但是您不想消除网站的当前状态。因此,您创建一个新分支devel并在新分支上进行更改(对两组文件)。现在,通过查看master和devel,您可以在网站的稳定状态和开发状态之间来回切换。
你可能喜欢git-worktree.这允许您将不同的分支签出到不同的目录.
例如
git checkout master
git worktree add ../dev dev
Run Code Online (Sandbox Code Playgroud)
您的问题有点不清楚您到底需要什么,但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上。
我不确定这是否是您正在寻找的内容,但我希望它有所帮助。
| 归档时间: |
|
| 查看次数: |
4001 次 |
| 最近记录: |