Git(SourceTree)回到未推送的已经“撤销”的提交

4
我对 Git 版本管理还比较新,可能刚刚丢失了很多的工作(但我希望有一种方法可以返回,这就是为什么我在这里询问的原因)。
我在 OsX 上使用 SourceTree 进行 Git 版本管理。很长一段时间我都没有提交任何更改,现在想要提交很多的修改。我选择在提交后立即推送。当推送花费了很长时间后,我检查了一下我的文件夹,并注意到我不小心选择了一个大型的生成文件夹,这个文件夹不应该被检入。所以我取消了推送(我收到了一条消息,类似于提交成功但是推送失败)。
因此,尽管我中断了推送,我仍然在我的主分支中看到了这个提交。我想撤销这个提交,这样我就可以再次提交(这次不包含生成文件夹)。我右键单击提交,发现有一个“还原提交...”选项,我点击了它。但是,它并没有删除这个修订版本,而是添加了另一个标记为“Revert“ Name of the commit i wanted to undo ” ”的修订版本。
糟糕的事情是 - 现在我的所有本地更改似乎都消失了,我的文件处于一个月前的状态。
由于(我中断了推送的)提交仍然在列表中,我想知道是否可以有办法返回那里?有没有可能把上个月我所做的本地更改找回来?我确实备份了我的文件,但也几乎两周前的备份。
这就是目前 SourceTree 的样子:
如您所见,我上次成功提交/推送是在 5 月 20 日。然后今天我尝试提交/推送新功能,但在推送过程中中断了。然后我“还原”了(中断的)提交,显然将所有本地文件重置为 5 月 20 日的状态。Sourcetree 显示有 2 个需要推送(我认为它们是中断的推送和“还原”提交的推送)。
有没有办法返回到我今天提交之前的本地状态?
非常感谢!
1个回答

8

首先撤销 还原 提交,放弃它所创建的更改:

git reset --hard HEAD^

然后撤销已更新的渲染图形提交,但保留这些更改在你的工作树中(即本地文件):
git reset HEAD^

我想回到提交今天之前的本地未提交更改。那些我在“更新渲染图形放大器…”提交中提交了(但尚未推送)。这样做可以吗? - matthias_buehlmann
我不想保留我的本地文件,因为它们现在的状态(截至5月20日)已经过时。我希望它们处于今天提交时的状态(但没有推送!)。 - matthias_buehlmann
@user1282931 是的,这已经足够了。Git仓库信息完全存储在.git文件夹中(除非你的设置非常奇怪)。 - Klas Mellbourn
成功了!我真想亲你一口!:) 只是为了我的理解。当我第一次提交更改时,它们被保存在本地某个地方(哪里?),然后我撤销了此提交,将所有本地文件重置为上一个提交的状态并删除了本地更改 - 但我之前提交的文件仍然在本地某个地方可用? - matthias_buehlmann
让我们在聊天中继续这个讨论:http://chat.stackoverflow.com/rooms/31704/discussion-between-klas-mellbourn-and-user1282931 - Klas Mellbourn
显示剩余6条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接