如何在犯错后恢复 GitHub 中的更改?

How to revert back changes in GitHub after committing some mistake?

虽然我已经阅读了 Github 上的一些基本命令,但是在遵循开源项目开发人员配置时,我不小心创建了一些东西并且卡住了,以至于现在我无法从那里继续进行任何地方。

我做的是

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

  2. 然后指令说用 git pull repo_URL branch_name[=13 从我的原始仓库中拉取=]

这就是一切都搞砸的地方。

我在提到解决方案是执行 git 提交时遇到了一些错误。

  1. 所以我执行了git commit.

现在一切都被绞死了。

我在我的新分行。无法摆脱那个,所以最终不能删除那个。 另外,当我输入 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

解决方案是什么,我怎样才能恢复一切?

Is there any way to do that?

只需保持当前存储库不变即可。

去别处尝试不同的方法。

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

然后先克隆远程仓库:

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

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

最后,将您从旧的本地仓库创建或修改的文件报告到这个(简单地复制),做一个git add .; git commit -m "First implementation"; git push

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

git reset --hard HEAD

在 github 网站上打开您的存储库。查看您的分支机构是否存在。通过转到分支选项卡。如果是,请转到终端并执行

git log

检查是否显示了您不想推送到您的存储库的任何提交。您可以通过 "git show " 查看提交中的更改,其中 hash 是 git 日志输出中显示的提交 ID。如果 git 日志输出中没有不需要的提交,只需执行

git reset

一切顺利。如果有不需要的提交丢弃,没有推送到服务器,写下面的命令

git reset --soft HEAD^

然后,

git reset

目前在您的分支 branch_name 上您有一些未决的更改,这些更改阻止您签出 master branch。从那到 "recover" 您可以在 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 以获得存储库中分支和更改的良好视觉视图。

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。