Git撤销提交
本文链接:http://volnet.github.io/#!docs/git/reset-to-old-version.md
在使用Git进行版本管理的时候,经常会遇到一些错误的提交。
在开始演示之前,我们先建立一个测试的环境。
mkdir gittest
cd gittest
git init echo "a" >> a.md
git add .
git commit -m "add a.md" echo "b" >> b.md
git add .
git commit -m "add b.md" echo "c" >> c.md
git add .
git commit -m "add c.md" rm -rf a.md
git add .
git commit -m "remove a.md" git remote add origin http://gitserver-url
方法一:git revert(推荐)
git log --oneline 931568f remove a.md
f622cef add c.md
2a0c5a9 add b.md
6fbba34 add a.md # 假设要回到2a0c5a9 git revert -n 2a0c5a9..931568f # ls可以看到工作目录中的文件已经恢复到当时的状态,这个时候查询git status将看到 2a0c5a9 commit前的状态。 # 这时候需要重新提交文件 git commit -m "revert 2a0c5a9..931568f and recommit" git push
方法二:git reset --hard(不推荐)
git log --oneline 931568f remove a.md
f622cef add c.md
2a0c5a9 add b.md
6fbba34 add a.md # 假设我们要恢复到2a0c5a9,则可以 git reset --hard 2a0c5a9 # 此时ls你将看到a.md git push -f #这里需要增加-f或者--force命令,原因当前的HEAD指针指向了一个旧版本,而服务器上这个版本不是最新版本。其实服务器并不知道你是使用reset命令得到的旧版本,以为你是一个长期没有获取最新版本的用户,提交了一个错误的版本。因此它会建议你git pull之后再更新。如果你非常明确你要这么做,并且不关心你目标版本之后的版本(可能包含别人的提交),你大可以就此使用-f来强制提交。同时你将获得一个干净的历史,就像什么都没有发生过一样。
Git撤销提交的更多相关文章
- git 撤销提交的文件
一.问题 近期在使用git时遇到一个问题,就是在git上传文件时,将一个100兆的大文件添加到了git,并执行了push操作,这时在上传完毕后,会提示这个错误 Large files detected ...
- Git撤销提交和修改相关操作
团队开发中经常遇到错误删除文件,错误提交等情况,那么使用Git该如何正确的进行撤销和恢复呢? 一.增补提交 git commit –C HEAD –a --amend -C表示复用指定提交的提交留言, ...
- git撤销提交到remote的commit
Reseting remote to a certain commit Assuming that your branch is called master both here and remotel ...
- git撤销提交(commit)
我们知道Git有三大区(工作区.暂存区.版本库)以及几个状态(untracked.unstaged.uncommited) 一.简介 Git 保存的不是文件的变化或者差异,而是一系列不同时刻的文件快照 ...
- git tag、gitignore和git撤销提交
前言 最近在git的使用过程中遇到了一些新的问题,所以写下来方便自己回忆. git tag 打标签 git tag -a v1.00 -m "注释" git tag 打标签命令 - ...
- Git 撤销所有未提交(Commit)的内容
撸了好多代码,但是突然设计改了(~~o(>_<)o ~~):或者引入个第三方库,后来又发现用不着,想删掉,但文件太多了(比如几百个):那,怎么办呢,都不想了...Git 比人聪明,所以能很 ...
- git撤销本地提交但未push的记录
### git撤销本地提交但未push的记录 前言:有时候本地执行commit命令或者cherry-pick命令后发现提交了不需要提交的东西,就需要把已提交的commit记录撤销下来,简单做下记录 撤 ...
- Git撤销对远程仓库的push&commit提交
撤销push 1. 执行 git log查看日志,获取需要回退的版本号 2. 执行 git reset –soft <版本号> ,如 git reset -soft 4f5e9a90ed ...
- IDEA工具java开发之 常用插件 git插件 追加提交 Code Review==代码评审插件 撤销提交 撤销提交 关联远程仓库 设置git 本地操作
◆git 插件 请先安装git for windows ,git客户端工具 平时开发中,git的使用都是用可视化界面,git命令需要不时复习,以备不时之需 1.环境准备 (1)设置git (2)本地操 ...
随机推荐
- 【译】RabbitMQ:Topics
在前面的教程中,我们对日志系统进行了功能强化.我们使用direct类型的交换器并且为之提供了可以选择接收日志的能力,替换了只能傻乎乎的广播消息的fanout类型的交换器.尽管使用direct类型的交换 ...
- GoogleNet tips
Inception Module googlenet的Inception Module Idea 1: Use 1x1, 3x3, and 5x5 convolutions in parallel t ...
- Linux下安装php加速软件Xcache
Nginx网站根目录:/usr/share/nginx/html 1.安装xcache cd /usr/local/src #进入软件包存放目录 wget http://xcache.lighttpd ...
- SVN服务器与测试服务器代码同步
在本地做测试项目的时候,想svn提交和服务器上的代码一步到位,不想再手动更新一次了,所以就研究了下同步, 要实现svn提交后自动更新到测试服务器,在你的版本库下的hooks文件夹下添加post-com ...
- Nginx-->基础-->理论-->001:Nginx基本介绍
一.nginx基本介绍 传统上基于进程或者线程模型架构的web服务通过每进程或者每线程处理并发连接请求,这势必毁在网络和I/O操作时产生阻塞,其另外一个必然结果则是对内存和CPU的利用率低下,产生一个 ...
- MyEclipse +Flex 整合
最近想利用red5开发一个流媒体的程序,在网上找了半天没有一个可用的代码,要么是下载需要多少币,要么是没有.纠结了半天,最后决定自检看着文字版本的教程,自己编写一个. 看着一 ...
- NC JDK报tools.jar错误(61版本)
添加jdk/lib目录下的tools.jar 然后设置环境变量
- Android安全开发之WebView中的地雷
Android安全开发之WebView中的地雷 0X01 About WebView 在Android开发中,经常会使用WebView来实现WEB页面的展示,在Activiry中启动自己的浏览器,或者 ...
- EasyUI DataGrid getChecked/getSelections 获取不到数据
今天使用getChecked获取选择的行,结果总是获取一行数据,于是换用getSelections,结果还是一样,想起之前做的项目,把idField换了下,之后getChecked/getSelect ...
- openSUSE 配置静态上网
openSUSE静态固定IP设置方法 openSUSE号称最华丽的Linux,只是中文资料实在太少,这里提供在VMmware Workstation 7.12中安装openSUSE 11.3设置静态固 ...