【问题标题】:How to restore changes from commit in git? [duplicate]如何从 git 中的提交中恢复更改? [复制]
【发布时间】:2016-08-15 09:54:58
【问题描述】:

我知道有很多这样的问题,但没有一个解决方案适合我。这是发生了什么:

我尝试在我的应用中添加新功能,因此我创建了一个新分支来实现此功能。
完成后,我将其合并到 master,删除了我测试新功能的分支并将更改推送到存储库 (bitbucket btw)。
代码是正常的。

然后我需要添加其他功能。
然后我再次创建了一个新分支,但现在我在 master 中测试了这个新功能,并让另一个分支使用“正确”的代码。

新功能不起作用,所以我尝试转到另一个分支并将其合并到 master,删除我所做的更改,它给了我一个合并冲突,我尝试了一切,但我没有能够做到。

然后我切换回 master 并使用正确的代码删除了分支。
我在 master 中输入了错误的代码。
我还没有推送更改,只​​是提交了,所以我尝试搜索如何解决这个问题,但没有奏效。

然后我运行了这个命令:git checkout NUMBER OF THE COMMIT

我检查了最后一次推送的提交,它有正确的代码。

我的项目更改为正确的代码,我认为一切正常,我认为它恢复了更改。

我跑了git status,这就是输出:

HEAD detached at f49fb28
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)

modified:   .DS_Store
modified:   Homework.xcworkspace/xcuserdata/Henrique.xcuserdatad/UserInterfaceState.xcuserstate

no changes added to commit (use "git add" and/or "git commit -a")

然后我运行 git add -Agit commit -m "some message" 并将其推送到存储库,认为代码会在那里修复。它没有,现在我的回购和项目有相同的代码,错误的代码。是否有可能我检查了我使用 RIGHT 功能所做的提交,而不是错误的,并且我的代码恢复到这个确切的提交?如果没有,我唯一的救赎就是重做所有事情。

请帮助我!

编辑:我跑了git status,现在输出不同了:

HEAD detached from f49fb28
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)

modified:   Homework.xcworkspace/xcuserdata/Henrique.xcuserdatad/UserInterfaceState.xcuserstate

no changes added to commit (use "git add" and/or "git commit -a")

【问题讨论】:

    标签: git version-control merge bitbucket merge-conflict-resolution


    【解决方案1】:

    我是否可以检查我使用 RIGHT 功能所做的提交

    首先阅读 cmets 中随附的完整答案。

    总结一下您现在可以简单地使用git reflog 来检查所需的提交。

    下面是 reflog 的样子:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-15
      • 2018-07-01
      • 2013-11-16
      • 2018-10-17
      • 2020-06-19
      • 1970-01-01
      • 2017-05-28
      • 1970-01-01
      相关资源
      最近更新 更多