Github分支恢复

时间:2014-04-30 07:23:45

标签: git version-control github

所以我向我的分支机构推了一下我很高兴。

然后(在当地)我做了一些改变。我不喜欢这些变化,如何恢复到我对分支的最后一次推动?

我试过git pull github branchname',但这似乎搞砸了我当地的工作甚至更多,并给了我回应: * branch master -> FETCH_HEAD

提前致谢。

4 个答案:

答案 0 :(得分:0)

以下是我的表现方式:

git log 

(它记录了已经提交和推送的内容......它可能看起来像这样:

commit ed0787d4c3375bfa2158506ea3d49402cbde9db1
Author: Michael <nobody@umich.edu>
Date:   Tue Apr 22 08:26:02 2014 -0700

    Replace two assets

    two assets were PSD instead of PNG. Fixed.

现在,将会有一份完整的提交列表。我将上面的列表用作我的&#34;最后的好消息&#34;提交ID,您可以这样做:

git reset --hard ed0787d4c3375bfa2158506ea3d49402cbde9db1 

(该数字是您要删除分支的提交ID)

git log

(确保它看起来不错)

git remote -v

git push -f origin HEAD

(保存您的更改!)

答案 1 :(得分:0)

这是我理解的情况。 你有一个远程分支,一切都好。 你有一个本地提交的地方出错了。

我看到两个选项:

  1. 重置 - 执行上一次良好提交
  2. 如何找到好的提交? git log -10 在过去的10次提交中显示当前分支的历史记录。

    git reflog -10 显示HEAD最后十次移动的历史(即你所做的,无论分支)
    发现提交后: git reset --hard [commit_sha1] 五个第一个sha1 char就够了。

    2 我们不介意您当地的分支机构

    确实你的远程分支很好。那为什么要这么麻烦? git checkout -b [remote_name]/[branch_name] 如何知道远程名称? git remote 分店名称 ? git branch -r

    例如:git checkout -b origin / foo

    如果您对新分支感到满意,请删除旧分支。 git branch -D [old_branch]

答案 2 :(得分:0)

对最后一次更改(这意味着在同一分支上没有进一步提交)提交非常简单。

您可以通过调用git commit --amend添加对上次提交的更改,这会在上次提交时添加您当前的更改。

你也可以&#34;解包&#34;您最后一次提交到当前工作分支(这意味着您当前的更改会丢失),方法是调用git reset --hard

我建议你阅读branch chapter的pro git,以便进一步了解分支和提交。另一个有用的资源是此互动cheat-sheet

答案 3 :(得分:0)

如果github/branchname是你想要的本地分支,那么就这样做:

git reset --hard github/branchname

请记住,git reset --hard删除提交 - 这就是您在这种情况下所需要的 - 但请将其置于您的最前沿。如果你不小心,这是一种容易失去工作的方法。如果你确实犯了错误,git reflog可以给你一个sha1的列表,这些sha1曾经是你的分支的一角,你可以用它来恢复你的状态。