当git提交了不该提交的代码,这样做可以不用跑路

430 阅读3分钟

这是我参与更文挑战的第5天,活动详情查看: 更文挑战

正常工作使用git一般就是三个命令用的比较多

  • git clone 拉取项目
  • git pull 拉取远端代码
  • git add  把所有文件放入暂存区
  • git conmmit -m"comment"  把所有文件从暂存区提交到本地仓库
  • git push 把所有文件从本地仓库提交到远程仓库
  • git merge 合并代码

git中四个区的概念

  1. 工作区 
  2. 暂存区 
  3. 本地仓库 
  4. 远程仓库

git的五种状态

  1. 未修改 
  2. 已修改 
  3. 已暂存 
  4. 已提交 
  5. 已推送

检查修改

  • 已修改,未暂存的情况下 我们可以使用git diff filename 查看具体文件的修改
  • 已暂存,未提交的情况下 当执行完git add 以后再进行git diff 会发现并没有什么结果。这说明git diff 只是检查我们工作区和暂存区的差别,这个时候我们需要使用git diff --cached 查看文件的修改
  • 已提交,未推送的情况 git diff master origin/master

以上知识简单的介绍了一下我们日常的git使用情况,接下来就是本章的重点,必考题。

撤销修改

  • 已修改,未暂存 在这个时候文件还是在我们的工作区,还没有进入暂存区,我们可以用 git checkout 或者git reset --hard 来进行撤销操作。 在这个时间段我们可以理解git add 和git checkout 是一对反义词。想让修改进入暂存区就执行git add 否则就是git checkout.
  • 已暂存,未提交 如果我们已经执行了git add 操作,但是还没有执行git commit 操作。这个时候忽然发现自己的修改存在bug想要撤销。这个时候可以执行 git reset git checkout。 git reset 只是将数据修改到提交之前的状态,文件的修改还是存在的,如果想要退回未修改的状态还是要再执行一下git checkout 命令 或者执行git reset --hard 此命令过于强大,使用请谨慎。会把你的修改完全恢复到未修改的状态
  • 已提交,未推送 如果你的操作行云流水,一气呵成。在执行了git add 后又执行了git commit ,这个时候代码已经在我们的本地仓库了,这个时候不要慌,方法总比困难多。 git reset --hard origin/master(分支名字) 是从远程仓库把代码取回来。这个执行完成后会发现修改全部没有了(谨慎操作)
  • 已推送 很不幸,这个时候代码已经推到了远端。已经执行了git push 命令 ,注意哈上边可都是master哦!这个时候你的代码已经提交到远程仓库,这个时候我们如果在想撤销我们的修改应该怎么办。怎么办?收拾收拾准备跑路吧~哈哈 当然不能这么容易就放弃,先恢复本地的仓库然后再强制推到远端就可以。(这个还没测试,有(bu)兴(pa)趣(si)的同学可以试试) git reset --hard HEAD git push -f

git的使用还有很多命令,这里知识分享了一下我们日常使用比较多的几个,其实在我们的日常开发中基本上就是git pull -->git add --> git commit -->git push。毕竟我们在ctrl+c -->ctrl +v 淦就完了xdm