如何在犯错后恢复 GitHub 中的更改?
How to revert back changes in GitHub after committing some mistake?
虽然我已经阅读了 Github 上的一些基本命令,但是在遵循开源项目开发人员配置时,我不小心创建了一些东西并且卡住了,以至于现在我无法从那里继续进行任何地方。
我做的是
指令说要创建一个分支,所以我创建了一个分支 git branch branch_name
然后指令说用 git pull repo_URL branch_name[=13 从我的原始仓库中拉取=]
这就是一切都搞砸的地方。
我在提到解决方案是执行 git 提交时遇到了一些错误。
- 所以我执行了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 status
和 git 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 pull
是 git fetch
后跟 git merge
的缩写
存在合并冲突!!!
看看这些文件:
.gitignore
LICENSE
README.md
您需要先解决那些合并冲突。 See here.
如果你把事情搞砸了,你可以中止合并并重新合并。
git merge --abort
git merge <remote>/branch_name
如果您不想保留任何更改。您可以随时通过调用将分支重置为远程版本:
git reset --hard <remote>/branch_name
如果您想保留更改,则需要解决这些冲突。您正在进行合并,此时无法切换到 master。
虽然我已经阅读了 Github 上的一些基本命令,但是在遵循开源项目开发人员配置时,我不小心创建了一些东西并且卡住了,以至于现在我无法从那里继续进行任何地方。
我做的是
指令说要创建一个分支,所以我创建了一个分支 git branch branch_name
然后指令说用 git pull repo_URL branch_name[=13 从我的原始仓库中拉取=]
这就是一切都搞砸的地方。
我在提到解决方案是执行 git 提交时遇到了一些错误。
- 所以我执行了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 status
和 git 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 pull
是 git fetch
后跟 git merge
存在合并冲突!!!
看看这些文件:
.gitignore
LICENSE
README.md
您需要先解决那些合并冲突。 See here.
如果你把事情搞砸了,你可以中止合并并重新合并。
git merge --abort
git merge <remote>/branch_name
如果您不想保留任何更改。您可以随时通过调用将分支重置为远程版本:
git reset --hard <remote>/branch_name
如果您想保留更改,则需要解决这些冲突。您正在进行合并,此时无法切换到 master。