Git - 用来自某个(最后)提交的文件替换工作树文件

时间:2015-07-09 08:03:29

标签: git

我有一个git存储库,目前位于master分支上。最后一次提交(f3d8237有大约十二个文件(全部为modified)。这些文件大多数与工作目录中的同伴不同。

我想要做的是:对于f3d8237中的每个文件,使用此文件替换工作树中的相应文件。

我一直在游泳这个特定场景。这个答案:https://stackoverflow.com/a/12049323/2554788似乎最接近我的情景,但基于这个主题的无数其他答案和评论,我害怕冒险。不想让事情变得更糟!

当然,可能很清楚我还没有削减我的git乳牙。

2 个答案:

答案 0 :(得分:2)

这应该做的工作:

git show --pretty="format:" --name-only f3d8237 | while read line
do 
   git checkout f3d8237 -- $line
done

至于您担心这些变化,如果不满意,您可以随时恢复更改,

git reset --hard

答案 1 :(得分:1)

受@ pratZ方法的启发,我最终重新创建,然后使用Windows PowerShell解决问题。我认为我应该继续在这里发布我的实际解决方案(因为它可能对其他人有帮助),同时接受他的回答。

git show --pretty="format:" --name-only f3d8237 | foreach{ git checkout f3d8237 -- $_ }

这将保留最后一次提交的f3d8237存储库HEAD,但用相应的文件替换所有工作副本。