(转载)Git的撤消操作 - …
来源:互联网 发布:知乎恶魔的奶爸 编辑:程序博客网 时间:2024/06/16 08:44
Git的撤消操作 - 重置, 签出 和 撤消
Git提供了多种修复你开发过程中的错误的方法. 方法的选择取决于你的情况: 包含有错误的文件是否提交了(commited);如果你把它已经提交了, 那么你是否把有错误的提交已与其它人共享这也很重要.
修复未提交文件中的错误(重置)
如果你现在的工作目录(work tree)里搞的一团乱麻, 但是你现在还没有把它们提交; 你可以通过下面的命令,让工作目录回到上次提交时的状态(last committed state):
$ git reset --hard HEAD
这条件命令会把你工作目录中所有未提交的内容清空(当然这不包括未置于版控制下的文件 untracked files).从另一种角度来说, 这会让"git diff" 和"git diff --cached"命令的显示法都变为空.
如果你只是要恢复一个文件,如"hello.rb", 你就要使用
$ git checkout -- hello.rb
这条命令把hello.rb从HEAD中签出并且把它恢复成未修改时的样子.
译者:上面二行和原文有出入,经验证是原文有误,所以我据正确的重写了.
修复已提交文件中的错误
如果你已经做了一个提交(commit),但是你马上后悔了, 这里有两种截然不同的方法去处理这个问题:
- 创建一个新的提交(commit), 在新的提交里撤消老的提交所作的修改. 这种作法在你已经把代码发布的情况下十分正确.
2 你也可以去修改你的老提交(old commit). 但是如果你已经把代码发布了,那么千万别这么做;git不会处理项目的历史会改变的情况,如果一个分支的历史被改变了那以后就不能正常的合并.
创建新提交来修复错误
创建一个新的,撤消(revert)了前期修改的提交(commit)是很容易的;只要把出错的提交(commit)的名字(reference)做为参数传给命令:
$ git revert HEAD
这样就创建了一个撤消了上次提交(HEAD)的新提交, 你就有机会来修改新提交(new commit)里的提交注释信息.
你也可撤消更早期的修改, 下面这条命令就是撤消“上上次”(next-to-last)的提交:
$ git revert HEAD^
在这种情况下,git尝试去撤消老的提交,然后留下完整的老提交前的版本. 如果你最近的修改和要撤消的修改有重叠(overlap),那么就会被要求手工解决冲突(conflicts), 就像解决合并(merge)时出现的冲突一样.
译者注: git revert 其实不会直接创建一个提交(commit),把撤消后的文件内容放到索引(index)里,你需要再执行git commit命令,它们才会成为真正的提交(commit).
修改提交来修复错误
如果你刚刚做了某个提交(commit), 但是你又想马上修改这个提交;
如果你在老提交(older commit)里发现一个错误, 但是现在还没有发布到代码服务器上. 你可以使用
- (转载)Git的撤消操作 - …
- Git的撤消操作
- [Git]Git的撤消操作-重置,签出和撤消
- em的错误 <转载>
- 当 今 中 国 的 深 层 悲 剧(转载…
- Git的撤消操作 - 重置, 签出 和 撤消
- Git的撤消操作 - 重置, 签出 和 撤消
- 恢复 git reset -hard 的误操作
- Git 的有用操作 (更新)
- Git 基础 - 撤消操作
- Git撤消操作
- Git 基础 - 撤消操作
- Git 基础 - 撤消操作
- git - 撤消操作
- git 撤消操作
- Git撤消操作
- Git 基础 - 撤消操作
- Git 基础 - 撤消操作
- LintCode rain trap 接雨水
- (转载)OpenCV中如何累加多幅图像并…
- VM下Centos7单块网卡既可设置固定ip又可上网的方案
- (转载)IplImage, CvMat,&nbsp…
- 卸载并重装openssh(解决ssh -1问题)
- (转载)Git的撤消操作 - …
- (转载)OpenCV 函数的参数用法…
- Android binder驱动中用到的关键结构体
- Linux系统启动时都发生了什么
- opencv新版中最重要的一个类…
- 安装fastDFS文件
- 图像分割之静态背景分割综述
- C语言返回字符串的四种方式
- 转 Linux下的 .o、.a、.so…