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

标签: git
1782人阅读 评论(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 可将其移除工作区。

查看评论

git add , git commit 添加错文件 撤销

1. git add 添加 多余文件 这样的错误是由于, 有的时候 可能 git add . (空格+ 点) 表示当前目录所有文件,不小心就会提交其他文件git add 如果添加了错误的...
  • kongbaidepao
  • kongbaidepao
  • 2016-08-19 19:44:31
  • 47056

git 所有撤销、回退命令

git add 后撤销: 撤销所有add文件 git reset HEAD . 撤销单个add文件 git reset HEAD -filenamegit commit 后撤销: 只回退commit的...
  • CSDNzhangtao5
  • CSDNzhangtao5
  • 2017-05-24 12:00:27
  • 4309

Git-撤销(回退)已经add,commit或push的提交

但是如要要保持版本历史干净的话,建议还是用 git reset[^footnote2],但是希望保留完整的历史的话,还是使用git revert为好。对于和其他人协同的项目,使用git rever是最...
  • YoungStunner
  • YoungStunner
  • 2017-12-02 16:43:06
  • 2060

git push提交成功后如何撤销回退

1.写在前面   我们在使用Git进行版本控制时,有可能会出现这种情况。git push后发现提交的内容不是想要的,这时候我们怎么做呢,提交上去的内容是没有删除按钮的(比如github,或码云)。所以...
  • guozhaohui628
  • guozhaohui628
  • 2017-12-28 15:42:31
  • 1226

git 回退某个版本或者去掉某些patch

diff -urN linux-x.y.z/    linux/     >   xxx_patch patch -p1 diffstat -p1 xxx_patch git checkout  ....
  • xiaolubk
  • xiaolubk
  • 2015-09-11 10:13:03
  • 2444

Git的纯命令操作,Install,Clone , Commit,Push,Pull,版本回退,撤销更新,分支的创建/切换/更新/提交/合并,代码冲突

Git的纯命令操作,Install,Clone , Commit,Push,Pull,版本回退,撤销更新,分支的创建/切换/更新/提交/合并,代码冲突 这篇是接着上篇分布式版本库——Window...
  • qq_26787115
  • qq_26787115
  • 2016-05-08 14:43:58
  • 6077

Git各种撤销操作

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

git reset(回退add操作)

在git的一般使用中,如果发现错误的将不想提交的文件add进入index之后,想回退取消,则可以使用命令:git reset HEAD ...,同时git add完毕之后,git也会做相应的提示,...
  • yaoming168
  • yaoming168
  • 2014-08-23 13:12:20
  • 72927

Git取消合并(merge)、暂存修改(stash)、回退到某个版本(reset)的使用方法

取消某次合并git merge --abort #如果Git版本 >= 1.7.4 git reset --merge #如果Git版本 >= 1.6.1Note: 在合并之前要保证没有未提交的文件,...
  • u011884440
  • u011884440
  • 2017-05-05 22:59:41
  • 2324
    个人资料
    等级:
    访问量: 8558
    积分: 277
    排名: 28万+
    文章存档
    最新评论