Ruby on rails Git checkout<;SHA>;还有希罗库

Ruby on rails Git checkout<;SHA>;还有希罗库,ruby-on-rails,git,heroku,Ruby On Rails,Git,Heroku,我在笔记本电脑上创建了一个本地Git repo,然后将源代码推送到Heroku,创建了一个远程分支。在几天的提交和推送之后,我需要回滚到以前的提交。这就是我所做的 cd <app root> git checkout 35fbd894eef3e114c814cc3c7ac7bb50b28f6b73 cd git签出35fbd894eef3e114c814cc3c7ac7bb50b28f6b73 有人告诉我,签出创建了一个新的工作树,而不是分支本身,所以当我将回滚更改推送到Her

我在笔记本电脑上创建了一个本地Git repo,然后将源代码推送到Heroku,创建了一个远程分支。在几天的提交和推送之后,我需要回滚到以前的提交。这就是我所做的

cd <app root>
git checkout 35fbd894eef3e114c814cc3c7ac7bb50b28f6b73 
cd
git签出35fbd894eef3e114c814cc3c7ac7bb50b28f6b73
有人告诉我,签出创建了一个新的工作树,而不是分支本身,所以当我将回滚更改推送到Heroku时,它说所有内容都是最新的,没有推送任何内容。我如何解决这种情况?提前感谢您的帮助。

您想重置:

git reset --hard 35fbd894eef3e114c814cc3c7ac7bb50b28f6b73

当您签出一个直接提交名称(使用提交对象的SHA-1散列)而不是签出一个分支名称时,您将得到一个“分离头”。HEAD是跟踪当前签出内容的“参考”。当您直接签出提交而不是分支(它不附加到任何分支)时,它将分离。拆离存储库标头时,不会更新任何分支。您可能会认为分离的头部状态就像签出了一个匿名分支


要重新连接存储库的头,您需要将当前头另存为分支并签出该分支:

  • 要在新分支中保存当前磁头,请执行以下操作:

    git branch <new-branch-name>
    
  • 然后,通过签出新的/更新的分支重新连接存储库的头部:

    git checkout <branch-name>
    
    这会将当前分支(或已分离的头,如果已分离)重置为命名的提交,并使索引和工作树反映该提交(即,它会丢弃自指定提交以来的任何提交以及任何未提交的内容)


    分离的头部状态对于重新访问旧状态很有用,有时对于短期工作也很有用,因为您不确定是否会保留。除此之外,您可能希望避免它。

    谢谢,这将使工作树变回分支?这可能是您最初应该做的,但不会解决您的问题。如果你的头仍然是分离的,它将不会重新连接到树枝上。请看我的答案。它会将您当前的头重置为指定的提交。因此,您需要
    git checkout master
    (或任何要回滚的分支),然后使用
    git reset
    命令。
    git checkout <branch-name>
    
    git reset --hard <commit>