GIT:从主分支创建仅包含特定文件的分支

8
我想创建一个分支,仅包含主分支中的某些文件。假设主分支包含以下几个目录:
app
app/test
app/dev
...

我想要实现的是将 app/test 的内容检出到新分支,并将它们放入根目录中,使其看起来像这样:
root
  - file from app/test
  - another file from app/test
  ...

这是否可能?通常我想要做的是将仅某些文件(新分支)推送到远程而不是原点。这是我得到的第一个想法,如果有更简单的解决方案,请告诉我。

谢谢。


你想要导入并保留历史记录直到现在吗? - Mayur Nagekar
这实际上并不是我非常关心的事情。如果能够在主分支中更改这些文件时每次进行检出,我会很感激。 - Michal Zimmermann
啊,所以这不是一次性的过程?你想让这些文件在主分支中更改时每次都导入到新分支中?我理解得对吗? - Mayur Nagekar
你在找这个吗? # 假设你在主分支上 git checkout hotfix1 git checkout master -- appl/login.php git commit -m “从主分支获取了最新的login.php副本" - Mayur Nagekar
是的,我想每次都导入它们。 - Michal Zimmermann
2个回答

2

看起来你想像往常一样创建一个新分支,然后使用 git filter-branch 剪除它的内容。


1
git filter-branch --prune-empty --subdirectory-filter project-directory HEAD 看起来就可以了,非常感谢! - Michal Zimmermann
似乎它正在工作,但是我如何再次从主文件更新文件?当我再次运行命令时,会显示“未找到要重写的内容”。 - Michal Zimmermann

1
你在寻找这个吗?
# Suppose you #Suppose you are on master branch
git checkout hotfix1
git checkout master -- appl/login.php
git commit -m “Obtained the recent copy of login.php from master"

一般来说是可以的,但我想把这些文件放到根目录下。 - Michal Zimmermann
你可以使用mkdir命令创建根目录,进入该目录并在其中运行git checkout命令。它应该会自动拉取你想要的文件。 - Mayur Nagekar
我有类似的需求,但我不明白如何启动分支 hotfix1。据我所知,它应该最初是空的,不是吗?或者第二个命令会清空它,只保留 app1/login.php 的内容? - Songio

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接