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