Cherry挑选特定提交并仅恢复已删除的文件?

时间:2014-12-02 22:36:38

标签: git commit cherry-pick

我有一个分支(分支A),它添加了大约300个文件,然后我将其合并为master。合并打破了master,所以我删除了所有300个文件并提交了删除这些文件。然后我继续回到分支A并修复覆盖,但合并此分支将不会带来这些文件,因为它们自删除它们的提交后尚未更新。有没有办法从提交中挑选已删除的文件,以便我可以将它们带回来?

1 个答案:

答案 0 :(得分:3)

在主分支上,获取自上次提交以来已删除文件的列表。

 git diff --name-status HEAD~1 | grep '^D'  | cut -c 3- > /tmp/FileList.txt

然后,遍历已删除文件的列表,并使用git show从另一个分支中提取文件数据。

for line in $(cat /tmp/FileList.txt); do git show OtherBranchName:$line > $line; done

不幸的是,这不会处理带空格的文件名,但我们可以使用this answer来解决这个问题。

IFS=$'\n'
for line in $(cat /tmp/FileList.txt); do git show OtherBranchName:$line > $line; done