我是git的新手 我想知道为什么恢复变化是如此复杂 1.我想知道如何从未推送更改(仅提交)
2.如何从推动的变化中恢复。
3.是否有任何良好的界面可以从linux(非shell使用)启动所有这些命令
谢谢
答案 0 :(得分:6)
我们知道Git非常强大。 您可以通过发出以下命令来查看本地副本和存储库之间的更改/差异:
git diff
如果您尚未暂存或提交,可以通过签入该文件替换您的工作目录git:
git checkout -- filename
其中文件名可以是index.html
取消暂存文件
如果您不小心添加/暂存了一个您不想要的文件,可以通过发出以下命令取消暂存该文件:
git reset HEAD filename
它实际上将该文件重置为最后一个提交阶段。
撤消提交
这有点棘手,并不像上面两个那么简单。 更改以前的提交可能会致命并打破git工作流程。
坏消息:如果你想改变最后两次提交,那么,你不能。
好消息:如果你只想改变你的最后提交,那么你可以。
要在上次提交中添加新文件:
git add filename
git commit --amend -am "message goes here"
要更改上次提交消息:
git commit --amend -m "new message goes here"
<强>矛盾强>
虽然我说你不能改变上次提交以外的任何内容,但你可以申请修复。
一个解决方法是纠正错误并再次提交
另一个解决方法是在任何先前的提交之前将文件的状态恢复到之前。需要使用Git为每个提交生成的唯一生成的SHA
密钥来完成此修复。所以你想要做的就是获取你想要恢复的提交的SHA
密钥。要获得此密钥,您应该运行:
git log
你应该得到类似的东西:
commit b83a5b0a0bbc3bd544cb06bdecb485a83da63008
Author: Username <exmaple@gmail.com>
Date: Mon Mar 7 18:54:38 2016 +0100
added limiting and offsetting results
commit 63a0e591ca7ff9538004afdbd6d07f7a3e5c417b
Author: Username <exmaple@gmail.com>
Date: Mon Mar 7 14:12:34 2016 +0100
removed authorization for login & logout
只是你要恢复的提交密钥。
63a0e591ca7ff9538004afdbd6d07f7a3e5c417b
你不必复制一切。它是如此独特的生成,你可以抓住前10个字符并运行这个命令:
git checkout 63a0e591ca7ff9538004a -- filename
此命令恢复该特定提交并将文件放入暂存区域。就像我之前展示的那样,如果你想将这个文件从暂存区域移回你的工作目录,你就运行了:
git reset HEAD filename
另外,要从工作目录中删除它,请运行:
git checkout -- filename
注意:您上次提交的是最上面列出的日志。
好消息
您可以使用revert
命令完全还原上次提交的更改。这个命令的作用是,它添加了已删除的文件/代码行,在添加和提交之前将修改更改回来。它实质上反映了你的提交。
如前所述,您需要使用SHA
键才能执行此操作。只需像以前一样抓住钥匙并运行:
git revert 63a0e591ca7ff9538004a
并且git会显示提交消息的样子,可能是您选择的文本编辑器。如果您愿意,可以编辑提交消息。只需保存并关闭文件,您的工作目录应该回到以前。
注意:如果您的更改很棒(文件已移动,已重命名等),您可能必须在此命令后合并分支。
还有reset
命令非常强大,必须谨慎使用。您可以阅读更多相关信息here
希望这有帮助。
答案 1 :(得分:0)
@awoyotoyin 您不应该为要恢复到&#34;
的提交获取SHA密钥但是,请抓住要恢复的提交的SHA密钥。
https://git-scm.com/docs/git-revert处的文档 将语法显示为git revert ... ...
其中......首先被描述为::提交以恢复。