Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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
Github分支恢复_Git_Version Control_Github - Fatal编程技术网

Github分支恢复

Github分支恢复,git,version-control,github,Git,Version Control,Github,因此,我推了推我的分行,我很高兴 后来(在本地)我做了一些改变。我不喜欢这些更改,如何恢复到上次推送分支时的状态 我尝试了“git pull github branchname”,但这似乎更加打乱了我的本地工作,并给了我回应: *分支主机->取头 提前感谢。以下是我的做法: git log (它获取提交和推送内容的日志…它可能看起来像这样: commit ed0787d4c3375bfa2158506ea3d49402cbde9db1 Author: Michael <nobody@u

因此,我推了推我的分行,我很高兴

后来(在本地)我做了一些改变。我不喜欢这些更改,如何恢复到上次推送分支时的状态

我尝试了“git pull github branchname”,但这似乎更加打乱了我的本地工作,并给了我回应:
*分支主机->取头

提前感谢。

以下是我的做法:

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.
(该数字是要将分支擦除到的提交ID)

(确保它看起来不错)


(保存您的更改!)

这里是我理解的情况。 你有一个远程分支,一切正常。 你有一个地方犯了错误

我看到两种选择:

  • 重置--很难执行上一次正确的提交
  • 如何找到好的承诺?
    
    git日志-10
    
    显示最近10次提交时当前分支的历史记录

    
    git reflog-10
    
    显示您头部最近十次移动的历史记录(即您所做的操作,无论分支如何)
    一旦发现提交:
    
    git重置--硬[commit_sha1]
    
    五个第一个sha1字符就足够了

    2我们不介意你们当地的分公司

    确实你的远程分支是好的。那为什么要麻烦呢?
    
    git签出-b[远程\u名称]/[分支机构\u名称]
    
    如何知道远程名称?
    
    git远程
    
    分行名称?
    
    列出远程分支
    

    e、 g:git签出-b源代码/foo

    如果您对新分支满意,请删除旧分支。
    
    吉特分行-D[旧分行]
    

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

    您可以通过调用将当前更改添加到最后一次提交中的来将更改添加到最后一次提交中

    您还可以通过调用
    git reset--hard
    ,将上一次提交“解压”到当前工作分支中(这意味着您当前的更改丢失)


    我建议您阅读pro git的教程,以进一步了解分支和提交。另一个有用的资源是此交互式资源。

    如果您希望您的本地分支位于github/branchname,请执行以下操作:

    git reset --hard github/branchname
    

    请记住,
    git reset--hard
    删除提交——这正是您在本例中所需要的--但请记住这一点。如果您不小心,这是一种很容易丢失工作的方法。如果您确实犯了错误,
    git reflog
    可以为您提供一个曾经是分支尖端的SHA1列表,一个d您可以使用它来恢复您的状态。

    一般来说,使用破坏性命令(rebase、reset filter branch等)关于公布的历史是个坏主意。但是,如果你是唯一一个推动这个公共分支的人,Michaels的建议也是我应该做的。对……我没有在我的答案中提出的是如何创建一个备份分支,以防我在过程中出错。我唯一关心的是最后两个命令,它们到底在做什么?顺便说一句,m最后一次推送/提交是好的,我的问题是让文件在本地再次达到标准(也就是说我的本地看起来像是我做的最后一次提交)。这仍然是最好的方法吗?我有点困惑。我不确定你需要一个“备份分支”。也可以。reflog将具有以前的提交,您可以随时重置回该状态。好的,我硬重置,但这没有在本地更改任何内容。本地仍然看起来不正确。它丢失了大量文件,我知道这些文件都在分支上。我的本地现在完全混乱,我知道主控和分支仍然很好。@ApathyBear,让我们开始吧请尝试第二个选项,即签出远程分支。是否要与远程分支同步?我说的对吗?
    git log
    
    git remote -v
    
    git push -f origin HEAD
    
    git reset --hard github/branchname