假设我从develop
分支创建了自己的分支,并在几次提交中修改了几次,现在我想将此文件恢复为develop
中的状态(不恢复我的其他状态)这是一种简单的方法吗? (我知道我可以从develop
结帐并在我的分支中覆盖它。)
谢谢!
答案 0 :(得分:11)
你做
git checkout develop -- <path/to/file>
答案 1 :(得分:1)
你无法恢复&#34;因为那是在提交的基础上完成的(而不是逐个文件)。但有两种选择。你可以选择适合你的。我们假设有问题的文件是quux.c
。
git rebase -i
分支的位置开始执行develop
,然后手动撤消自此后每次提交中对quux.c
所做的更改。 Git将重写提交,以使quux.c
看起来像develop
从未改变过来git show master:quux.c > quux.c
被切断。 quux.c
。这将使用master
上的文件版本覆盖git checkout branch -- file
。然后添加并提交它。这将创造一个额外的&#34;还原&#34;提交,但它比上面更简单。 正如其他答案正确指出的那样,git show
比我在这里提到的created
命令更友好,但效果是相同的。
答案 2 :(得分:0)
请参阅以下链接:
How to retrieve a single file from specific revision in Git?
How to get just one file from another branch
git show source_branch:path/to/file > file
运行良好,除了如SO问题&#34;如何从Git中的特定版本检索单个文件?&#34;中详述的那样,您需要使用repo根目录中的完整路径
您只能获得最新的文件状态 但是,对于git checkout或git show,您实际上可以引用您想要的任何修订,如SO问题&#34; git guout&#34;中的文件的git checkout修订版所示:
$ git show $REVISION:$FILENAME
$ git checkout $REVISION -- $FILENAME
同样是$ FILENAME是版本化文件的完整路径。
$ REVISION可以如git rev-parse所示:
experiment@{yesterday}:app.js # app.js as it was yesterday
experiment^:app.js # app.js on the first commit parent
experiment@{2}:app.js # app.js two commits ago
等等。