Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 如何在重新基址之前检索旧提交_Git_Branch_Rebase - Fatal编程技术网

Git 如何在重新基址之前检索旧提交

Git 如何在重新基址之前检索旧提交,git,branch,rebase,Git,Branch,Rebase,比如说,我在一个叫做“最新”的分支机构工作。完成任务后,我就开始工作了。在冲突解决过程中,当我将“主”分支的更改重设为“最新”分支时,我意外地接受了主分支的所有更改&因此,最终,当重设完成时,我丢失了在“最新”分支中完成的大量工作 考虑到我在“最新”分支中重新设置了基础,我所做的工作的承诺是否被我接受的冲突解决方案覆盖了?我以前的(原始)提交是否已消失?如果没有,我怎样才能找回它们呢。谢谢。您在最新的分支中所做的原始提交应该仍然可以在git reflog中访问。当前的最新的分支现在有新的、重写的

比如说,我在一个叫做“最新”的分支机构工作。完成任务后,我就开始工作了。在冲突解决过程中,当我将“主”分支的更改重设为“最新”分支时,我意外地接受了主分支的所有更改&因此,最终,当重设完成时,我丢失了在“最新”分支中完成的大量工作


考虑到我在“最新”分支中重新设置了基础,我所做的工作的承诺是否被我接受的冲突解决方案覆盖了?我以前的(原始)提交是否已消失?如果没有,我怎样才能找回它们呢。谢谢。

您在最新的
分支中所做的原始提交应该仍然可以在git reflog中访问。当前的
最新的
分支现在有新的、重写的提交。您可以尝试在reflog中进行筛选,但最快的方法可能是将
latest
硬重置到远程跟踪分支
origin/latest

# from latest
git reset --hard origin/latest
此选项假定,在进行相关提交后,您将推送到远程,从而更新(本地)跟踪分支
origin/latest
。如果是这样,则跟踪分支的外观仍应与重基之前相同

如果在提交后没有推送本地分支,那么reflog可能仍然能够帮助您。键入
git reflog
。然后,在糟糕的重新基之前找到作为分支头的commit。您可以使用提交消息来帮助您。完成该提交的SHA-1后,再次执行硬重置:

# from latest
git reset --hard <SHA-1 of your old HEAD>
#最新版本
git重置——硬

这就是问题所在。我没有将我的工作分支“最新”推到远程源。它都是本地的。@Kayote在本例中,我还为您提供了一个使用reflog的选项。谢谢,问题不是我不能收回头部,而是我不能在顶部选择提交,因为旧的提交不再存在?@Kayote旧的提交仍然是Git对象模型的一部分,它们之间的指针仍然存在。它们仍然存在。。。您可以看到他们使用的是reloj。通常情况下,您通过重置来收回不正确的工作,如您所描述的。。。但如果你想用樱桃签在上面申请,你可以这样做。