关闭

浅谈git撤销回退命令相关用法

标签: git
1523人阅读 评论(0) 收藏 举报
分类:

初来公司实习,每次改完代码后都需要用代码管理工具git提交到代码库。由于刚开始对 git 并不熟悉,只会简单的 commit,push 指令,一旦提交出了问题需要撤销回退的话就不知道该怎么办了。经过一段时间的研究,总算是把里面相关原理搞懂了,遇到git提交出现问题,现在自己也能想办法解决而不至于手足无措了。下面就说说我对git撤销回退这块相关的理解。

git reset

首先,我们要弄清以下三条命令的区别:

git reset –hard

git reset –soft

git reset

工作区,暂存区,本地仓库,远程仓库的概念我在这里就不介绍了。这是git最为基础的概念,可自行百度。下面说说这三条 git reset 指令的区别:

git reset –hard: 重置工作区,暂存区,本地仓库的所有文件到某一节点。例如 git reset –hard HEAD^ 表示工作区,暂存区,本地仓库的所有文件全部回退到上一个节点,也就是说你从上一个节点到这个节点之间所做的修改全部被撤销了。当然如果要回到特定的一个节点可以用 git reset –hard commitId 。通过指定要回到的节点值来回到对应的节点。

git reset –soft:只重置本地仓库的文件,工作区和暂存区的文件不变。

git reset 等同于 git reset –mixed,只重置本地仓库和暂存区文件,工作区文件不变。

当我们提交完并push代码到远程仓库后,发现代码有问题,想重新提交,首先在gerrit上abandon掉自己刚才上传的代码,接着,用git reset HEAD^或者git reset –soft HEAD^回到上一个节点(git reset HEAD^后,使用git add .就相当于git reset –soft),不要用git reset –hard。因为这会把你本地工作区修改的全部撤销,这样你之前的修改就全没了。虽然也有办法再找回来,只要找到那次提交的commitId就可以了,下面会介绍。

另外,我们还可以用git reset file 来使一个已经添加到暂存区的file文件重新返回到工作区。

git log

我们通过git log就可以查看到每次提交的 commitId 了,如果嫌 git log 显示的信息过多,可以使用 git log –pretty=oneline 让每次提交的关键信息在一行显示。但是如果使用了 git reset –hard,那么使用 git log 只能看到你重置点之前的提交 commitId,无法看到重置点之后的提交 commitId,要想找到重置点之后的 commitId 可以用git reflog。

git checkout

git checkout有两个作用,如果后面接的是文件名的话,如 git checkout file 可以将一个工作区的文件撤销其修改。如果后面接的是分支名的话,如 git checkout b表示的是切换到b分支。对于工作区新建立的文件,用 git clean -df 可将其移除工作区。

3
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

git 所有撤销、回退命令

git add 后撤销: 撤销所有add文件 git reset HEAD . 撤销单个add文件 git reset HEAD -filenamegit commit 后撤销: 只回退commit的信息,保留修改代码:git reset --soft head 彻底回退到上次commit版本,不保...
  • CSDNzhangtao5
  • CSDNzhangtao5
  • 2017-05-24 12:00
  • 1500

Git各种撤销操作

撤销git add操作git reset HEAD <file> # 取消add操作并保留修改 git checkout -- <file> #若继续该命令,则会删除掉刚刚的修改内容撤销git commit操作git reset --soft <commit_id&...
  • lzx_2011
  • lzx_2011
  • 2016-05-07 14:03
  • 14114

git 所有撤销、回退命令

git add 后撤销: 撤销所有add文件 git reset HEAD . 撤销单个add文件 git reset HEAD -filenamegit commit 后撤销: 只回退commit的信息,保留修改代码:git reset --soft head 彻底回退到上次commit版本,不保...
  • CSDNzhangtao5
  • CSDNzhangtao5
  • 2017-05-24 12:00
  • 1500

Git各种撤销操作

撤销git add操作git reset HEAD <file> # 取消add操作并保留修改 git checkout -- <file> #若继续该命令,则会删除掉刚刚的修改内容撤销git commit操作git reset --soft <commit_id&...
  • lzx_2011
  • lzx_2011
  • 2016-05-07 14:03
  • 14114

Git与Arc重用命令(不断更新)

Git命令小结 git branch [name] 创建本地分支 git checkout [name] 切换本地分支 git add -u 只把修改的文件添加到索引库 git fetch 下载最新项目并且比较与最新项目的不同 git –help 查看帮助文档 git reset...
  • u014527619
  • u014527619
  • 2015-07-21 09:15
  • 1641

Git(版本回退、工作区与暂存区、管理修改、撤销修改、删除文件)常用操作及原理

git常用的版本控制操作
  • qq_24236769
  • qq_24236769
  • 2017-07-16 09:51
  • 925

git 撤销已经push上去的操作

今天 github 上操作遇到了一个很头疼的问题,在某个文件中进行了误操作(有可能是加入了BOM头),diff 没看到差异,但是线上就是不正常显示。修改半天没用,只要回退版本。 通过 git log 可以查看近期 commit 的信息: commit bcdfd65ba3...
  • kldxcr
  • kldxcr
  • 2014-08-14 20:29
  • 3137

如何撤销Git的一次分支合并操作

合并分支的操作rebase或者merge使用git多人协作开发同一个项目时,多人协同编写修改同一份代码时,各自在自己的分支上修改编辑代码;最终都需要保存提交到代码的主分支,这里会涉及到分支间的合并操作一般为:git merge masterbranch git rebase masterbranch...
  • dahaohan
  • dahaohan
  • 2016-02-02 19:35
  • 1702

如何撤销git pull

如题如何撤销git pull 声明:本文为作者自身实践,如因此操作导致了其他问题概不负责。场景, 我们在本地branch A上修改了,然后commit and push(假设commit后的id 是A1),但是没有被merge到master branch中。这时候有其他同事提交了patch并且被m...
  • russle
  • russle
  • 2016-08-31 19:01
  • 6694

Git学习笔记二(版本回退、工作区和暂存区、撤销修改、删除文件)

Git学习笔记二
  • peisir
  • peisir
  • 2017-08-08 20:21
  • 543
    个人资料
    • 访问:6147次
    • 积分:252
    • 等级:
    • 排名:千里之外
    • 原创:18篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类