如何调和分离的头部和起源/主人? 已经签出旧的散列

介绍和搜索

所以我认为我犯了一个严重的错误,我很担心。 我已经解析了分离主管的论坛,并且我已经接近找到答案,但这些方案过于具体,并且不适用于我所在的位置。 如果你发现一个回答我的问题的特定线索,请链接我。

例如:我该如何协调分离的HEAD与主/来源?

这家伙已经完成了git rebase -i ,我没有。 我试过重新装订,但它没有解决我的问题。

小背景

  • 我是git的新手; 我只能自己使用git
  • 我拥有远程存储库
  • 需要一套旧的代码,这是时间敏感的问题
  • 我拿起一个小编程,并在没有其他人编码的工作场所使用它(所以我不能要求帮助)
  • 问题:

    为了使用工作代码访问旧的提交,我做了(可能是错误的):

    git log
    git checkout <hash-of-desired-old-commit>
    

    我继续完成代码。 感谢善良的版本控制! 但拍,为什么git如此复杂? 我如何保存这项工作? 我现在在一个独立的头。 Origin / Master在将来的某些提交中最好全部删除。

    我曾试过

  • 将整个文件夹复制并粘贴到其他地方,仅用于备份
  • git add -A后跟git commit -m "oh shit, detached head commit"git rebase master
  • git reset --hard HEAD~3每推荐一次:签出旧提交并将其作为新提交
  • 问题 :我如何调和我的独立头与原点/主人? 一旦和解,我需要git push --force或者什么(特别是用--force标志)? 在这个分离的头部有工作,我读过的时间越长,垃圾收集可能会来,并吃掉我丢失的分支。 对不起,我没有任何正式的git培训......我几乎已经准备好检查原始主机,然后重写代码。

    先谢谢你。


    如果您位于分离的HEAD上,并且想要保存HEAD当前所处的状态,则只需创建一个分支:

    git branch save-this-head
    

    现在,你有一个分支指向这个完全分离的HEAD,所以你可以安全地检查出来而不会丢失东西:

    git checkout save-this-head
    

    而现在,你不再处于独立HEAD状态。 你和你的改变是安全的! 如果您有任何未决更改,您应该立即提交,以便我们可以自由移动。

    之后,您可以将此新分支重新分配到其他分支,例如主分支:

    git rebase master
    

    这应该重播主控上丢失的提交。 所以自分离的HEAD以来所做的更改将被恢复。

    如果你只是想保持save-this-head状态,扔掉以前的主人,你可以结算主人,然后将其重置为保存状态:

    git checkout master
    git reset --hard save-this-head
    

    这将使master等同于save-this-head ,将master所有其他变化扔掉。 如果你想推这个,你可能必须强制推送,然后才能从远程移除提交。


    我读过的话,我等待的时间越长,垃圾收集可能会来,吃我丢失的分支

    首先,只要你保持这种状态,HEAD将指针继续看着那个提交对象(这就是为什么它首先被称为“分离HEAD”)的原因。 这将阻止任何垃圾收集来移除该提交对象(及其所有父母)。

    即使你意外地离开了分离的HEAD状态,使​​得你提交的提交是“悬挂”的提交,Git也会将对象保留多周,甚至考虑允许对象被垃圾收集。 仅仅因为垃圾收集并不意味着GC会实际运行,尤其是当您不与存储库交互时。


    顺便说一句。 在将来,只要你想回到你历史上的提交,并期望做一些事情(除了看),你应该创建一个分支。 即使它只是一个临时的东西,让它可以更自由地移动,并且不会因为脱离HEAD状态而不愿意做任何事情:

    git checkout -b fix-something <some-old-hash>
    
    链接地址: http://www.djcxy.com/p/18861.html

    上一篇: How to reconcile detached head and origin/master? Already checked out old hash

    下一篇: How do I pull a single commit from GitHub