【发布时间】:2014-05-19 18:38:31
【问题描述】:
假设我有一个像这样的非常简单的分支
A -- B -- C -- D -- E
* * *
其中A、C和E更改了文件F(即B, D与F无关)。我要做的是提取A, B, E,然后将它们重新组合到一个新的分支中:
A -- C -- E (new branch)
我不知道该怎么做或是否可能。谢谢。
【问题讨论】:
-
您可以使用
git filter-branch。请注意,无论您尝试什么,都会有效地创建与原始提交不兼容的不同提交 A、C 和 E。 -
@poke,请考虑将您的评论转换为答案,因为我认为这是
git subtree的唯一方法,它可以自动执行几乎此任务,适用于子目录(子树)而不是单个文件。所以是的,解决问题的一种方法是将E“克隆”到一个新分支中,并在其上运行正确检测的git filter-branch。 -
@kostix 我想关闭这个问题。链接的问题显示了如何使用
filter-branch比我在这里可能重现的更详细。 -
@poke,您链接到的页面看起来非常详细,但是保留单个文件与保留子目录不同...比如说,您调用
git filter-branch --index-filter=...并传递给它究竟是什么命令?git rm不支持否定匹配(例如“除了匹配*foo之外的所有内容”)。
标签: git git-branch