返回提交,撤消文件中的更改,然后返回上次提交

时间:2017-11-28 14:22:44

标签: git

我在删除文件的过程中处理一个功能(分支) 不再使用,但出于某种原因,我需要它。

所以我这样做了:

git checkout hashofcommit0 -- path/to/my/file

它有效,但我已经丢失了文件上的所有注释。我真的需要注释。

当然,我可以创建一个新分支,应用我最后一个分支完成的所有差异(除了删除的文件),并且很高兴。

(0) - > (1) - > (..) - > (n)的

是否有一个解决方案可以返回提交(0),撤消删除,并返回上次提交(n)而不会发生冲突?

2 个答案:

答案 0 :(得分:3)

git rebase -i hashofcommit0

edit标记为删除文件的提交

当rebase操作到达该提交时,它应该给你控制和一个shell

git add name_of_file
git commit --amend
git rebase --continue

让我知道

答案 1 :(得分:2)

详述Carpao答案

git rebase -i hashofcommit0^   (note the ^ that indicate the father of your first commit)

您将看到从旧版本到最近版本

的提交列表
pick hashofcommit0  comment of commit0
pick hashofcommit1  comment of commit1
pick hashofcommit2  comment of commit2
pick hashofcommit3  comment of commit3
pick hashofcommit4  comment of commit4
pick hashofcommit5  comment of commit5
...

仅将第一个pick更改为edit

在错误提交

的情况下,您将被提示使用shell

使用以下命令恢复丢失的文件:

git checkout HEAD^ -- nameOfMissedFile  

然后重新添加它并修改提交,然后继续使用rebase

git add nameOfMissedFile
git commit --amend        (confirm or change the comment of the commit)
git rebase --continue