2014-12-01 98 views
2

考虑到问题标题,我将如何恢复存储在A中的文件?Git:恢复存储在分支A中的文件,在B中删除

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

现在我想在我的devel的分公司所有这些变化,但feature_x一个简单合并成devel的将不包含已删除的文件。我的猜测是git检测到这些文件已被删除,所以它们的变化与devel无关。

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

编辑:甚至恢复失去历史,因为git只跟踪内容,而不是文件。因此,如果使用还原或结帐方法并不重要,它们是恕我直言的等价物。

回答

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 
+0

通过使用结帐我将失去历史。这不应该是恢复的情况,对吧? – marscher 2014-12-01 16:48:07

+0

结帐意味着几乎“从该分支复制该文件” – DRC 2014-12-01 16:48:50

1

我相信你不得不恢复已删除的文件中的一个一次,如果你不想恢复。

该命令会在文件被删除前为您提交提交。 (它会回头找最近的提交,其中[文件名]改变)

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

然后你可以检查出该文件和合并如常。

相关问题