Git:恢复存储在分支A中的文件,在B中删除

时间:2014-12-01 16:00:56

标签: git

鉴于问题标题,我如何简单地恢复存储在A?

中的文件

具体而言,文件存在于功能分支上,而功能分支仅用于维护这些文件。

我现在希望在 devel 分支中进行所有这些更改,但将 feature_x 简单合并到devel中将不包含已删除的文件。我的猜测是git检测到这些文件已被删除,因此它们的更改与开发无关。

我希望解决方案不包含devel中所有rm提交的恢复(遗憾的是,分支的外包不是非常线性的)。

编辑:即使是恢复也会丢失历史记录,因为git只跟踪内容,而不是文件。因此,如果使用恢复或结账方法无关紧要,则它们与IMHO等效。

2 个答案:

答案 0 :(得分:1)

我知道这很难看,但简单的解决办法就是:

git checkout feature_x -- filename

您还可以通过以下方式简化此过程:

git checkout branchA
for i in "$(git log feature..branchA --summary --diff-filter=D | grep "delete mode" | cut -d " " -f 5-)" ; do
    git checkout feature -- "$i"
done

答案 1 :(得分:1)

如果您不想还原,我相信您必须一次恢复已删除的文件。

此命令将在删除文件之前提交提交。 (它将回顾并找到[filename]更改的最新提交)

git rev-list -n 1 HEAD -- [filename]

然后你可以像往常一样检查文件并合并。