在犯了一些错误之后如何恢复GitHub中的更改?

时间:2015-02-21 07:52:24

标签: git github

虽然我已经在Github上阅读了一些基本命令,但是在跟随开源项目开发人员配置时,我意外地创建了一些东西并且陷入了如此严重的困境,以至于现在我无法从那个地方前往任何地方。

我做的是

  1. 说明创建了一个分支,所以我创建了一个分支 git branch branch_name

  2. 然后说明用 git pull repo_URL branch_name

  3. 从我的原始仓库拉出来

    这就是所有事情搞砸了。

    我得到了一些错误,其中提到解决方案是执行git commit。

    1. 所以我执行了 git commit
    2. 现在一切都被绞死了。

      我在新分行。无法说出来,所以最终无法删除。 此外,当我输入 git status

          On branch branch_name
          You have unmerged paths.
            (fix conflicts and run "git commit")
      Changes to be committed:
      
          new file:   ../../.br.json
          new file:   ../../.gitattributes
          new file:   ../../.gitmodules
          new file:   ../../.jshintrc
          new file:   ../../.travis.yml
          new file:   ../../CONTRIBUTING.md
          new file:   ../../Gruntfile.js
          new file:   ../../NOTICE
          new file:   ../../package.json
      and so on...
      

      当我尝试通过 git checkout master 结帐其他分支时 我收到这些消息:

      .gitignore: needs merge
      LICENSE: needs merge
      README.md: needs merge
      error: you need to resolve your current index first
      

      决议是什么,如何将所有内容还原?

5 个答案:

答案 0 :(得分:2)

  

有没有办法做到这一点?

只需保留当前的回购。

去其他地方尝试不同的方法。

首先确保your config user.name and user.email are properly set locally

然后首先克隆远程仓库:

git clone https://<yourUserName>@github.com/<yourUserName>/<yourRepo>
cd <yourRepo>

完成后,您应该在主分支中(使用git statusgit branch -avvv检查)

最后,将您从旧本地仓库创建或修改的文件报告给此文件(只需复制),执行git add .; git commit -m "First implementation"; git push

答案 1 :(得分:1)

如果要还原所有更改,只需执行以下命令:

  

git reset --hard HEAD

答案 2 :(得分:1)

目前在您的分支branch_name上,您有一些待处理的更改,这会阻止您查看master branch。到&#34;恢复&#34;从那以后 您可以在branch_name分支上签入所有这些更改,也可以取消更改。

如果没有挂起的更改,您可以毫无问题地切换到任何其他分支。

因此,检查所有挂起更改的最简单方法是运行

$ git commit --all --message "Some messed up changes"

将创建所有这些更改的提交。即使您可能不想保留它们,也可以在以后删除它。

取消可以运行的更改

$ git checkout <filenames>

或自动处理以下两个命令之一的所有文件

$ git reset --hard HEAD
$ git ls-files --modified -z | xargs -0 git checkout

顺便提一下,我建议您运行gitk --all以获得存储库中分支和更改的可视化视图。

答案 3 :(得分:0)

在github网站上打开您的存储库。看看你的分支是否存在。通过分支标签。如果是,请转到终端并执行

  

git log

检查是否显示了您不想推送到您的回购的提交。您可以通过“git show”查看提交中的更改,其中hash是git log输出中显示的提交ID。如果git log输出中没有不需要的提交,只需执行

  

git reset

你很高兴。如果有一个不需要的丢弃提交(未被推送到服务器),请编写以下命令

  

git reset --soft HEAD ^

然后,

  

git reset

答案 4 :(得分:0)

gut pullgit fetch的缩写,后跟git merge

发生了合并冲突!

看看这些文件:

.gitignore
LICENSE
README.md

您需要先解决这些合并冲突。 See here

如果您搞砸了事情,可以中止合并并再次进行合并。

git merge --abort

git merge <remote>/branch_name

如果您不想保留任何更改。您始终可以通过调用以下方式重置分支到远程版本:

git reset --hard <remote>/branch_name

如果您想保留更改,则需要解决这些冲突。您处于合并的中间,此时无法切换到master。