git-撤销修改

原创 2017年01月03日 20:20:16


工作区(Working Directory)
在电脑里能看到的目录,有一个隐藏目录.git,是Git的版本库。

版本库(Repository)

Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个支master,以及指向master的一个指针叫HEAD

把文件往Git版本库里添加的时候,是分两步执行的:

第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区

第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支


场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file

场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。

场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,git reset HEAD^

**************************************************************************

1)工作区jdbc.properties已更改

$ git status
On branch develop
Your branch is up-to-date with 'origin/develop'.
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   src/jdbc.properties
        modified:   src/struts.xml

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        .idea/
        cs_1221.iml
        out/

no changes added to commit (use "git add" and/or "git commit -a")

nanayin@201605050385- MINGW64 /e/IdeaProjects/CustomerService/cs_1221/src (develop)
$ cat jdbc.properties
jdbc.driver=com.mysql.jdbc.Driver
#jdbc.url=jdbc:mysql://localhost:3306/credit
#jdbc.username=root
#jdbc.password=123

#jdbc.url=jdbc:mysql://10.151.15.103:13306/credit
#jdbc.username=root
#jdbc.password=123456

#jdbc.url=jdbc:mysql://10.151.15.100:3306/intell_kefu
#jdbc.username=intell_kefu
#jdbc.password=123qwe
2)把工作区的更改,add到暂存区里
nanayin@201605050385- MINGW64 /e/IdeaProjects/CustomerService/cs_1221/src (develop)
$ git add jdbc.properties

nanayin@201605050385- MINGW64 /e/IdeaProjects/CustomerService/cs_1221/src (develop)
$ git status
On branch develop
Your branch is up-to-date with 'origin/develop'.
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   jdbc.properties

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   struts.xml

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        ../.idea/
        ../cs_1221.iml
        ../out/

3)撤销add到暂存区的修改

nanayin@201605050385- MINGW64 /e/IdeaProjects/CustomerService/cs_1221/src (develop)
$ git reset jdbc.properties
Unstaged changes after reset:
M       src/jdbc.properties
M       src/struts.xml

4)暂存区的修改,继续commit到本地仓库

nanayin@201605050385- MINGW64 /e/IdeaProjects/CustomerService/cs_1221/src (develop)
$ git commit -m 'test'
[develop 8b42971] test
 1 file changed, 7 insertions(+), 3 deletions(-)

nanayin@201605050385- MINGW64 /e/IdeaProjects/CustomerService/cs_1221/src (develop)
$ git status
On branch develop
Your branch is ahead of 'origin/develop' by 1 commit.
  (use "git push" to publish your local commits)
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   struts.xml

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        ../.idea/
        ../cs_1221.iml
        ../out/

no changes added to commit (use "git add" and/or "git commit -a")

5)撤销本次撤销本次commit提交

git reset HEAD^

6)误删除

在工作空间中删除了一个文件,

一是确实要从版本库中删除该文件,那就用命令git rm删掉,并且git commit

另一种情况是删错了,把误删的文件恢复到最新版本:  git checkout -- test.txt

1.1  git reset HEAD

暂存区的目录树会被重写,会被master分支所指向的目录树所替换,但是工作区不受影响


1.2 git rm --cached <file>

会直接从暂存区删除文件,工作区不受影响


1.3 git checkout . 或者 git checkout --<file>

会用暂存区全部的文件或者指定的文件 替换工作区的文件


1.4 git checkout  HEAD .  或者 git checkout  HEAD  <file>

会用HEAD指向的master分支中的全部或者部分文件替换暂存区和工作区中的文件


git个人使用总结 —— idea命令行、撤销commit (未完待续)

近期在使用git,最开始在idea界面操作,后来要求用命令行。刚开始还不是很习惯,感觉很麻烦,用了几天后感觉爽极了! 其实git的命令也不是很多,熟悉一段时间就差不多能顺利使用了。使用过程中遇到了各...
  • chzphoenix
  • chzphoenix
  • 2014年07月24日 18:58
  • 11694

idea 把一个add到git的文件去掉

当你用idea把误把一个文件add到git后,想把这个文件去掉(也就是从git管理中去掉,commit时不把这个文件提交)的话,可以用下面的方法: 这方法就等于:git ...
  • hotdust
  • hotdust
  • 2016年11月01日 13:27
  • 6024

Intellij 新建文件 自动add进版本控制SVN 或 GIT

1. 设置自动加入版本控制 2. 取消某些文件加入版本控制 在使用intellij idea提交代码的时候,一直是在version control中,选中对应文件,右键submit就提交了,一直忘了关...
  • u013520666
  • u013520666
  • 2017年04月13日 13:29
  • 6043

git 撤销commit

如果不小心commit了一个不需要commit的文件,可以对其进行撤销。先使用git log 查看 commit日志:$ git log commit 85fa2c254f25237080871466...
  • TH_NUM
  • TH_NUM
  • 2017年04月17日 14:36
  • 433

git强制回滚+IDEA+GIT BASH

今天提交到服务器上的代码出问题了。 被迫需要回滚到一个旧的版本。 具体需要如下操作: 在本地进行回滚,reset 到这个提交,然后push -force 到远程。 ...
  • zhang_xiaomeng
  • zhang_xiaomeng
  • 2016年09月13日 14:20
  • 4856

六、Git-撤销修改

参考文献: https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001374831...
  • qq_15792013
  • qq_15792013
  • 2017年09月11日 18:36
  • 89

Git-撤销修改

 自然,你是不会犯错的。不过现在是凌晨两点,你正在赶一份工作报告,你在readme.txt中添加了一行: $ cat readme.txt Git is a distributed versi...
  • tyihh
  • tyihh
  • 2014年08月16日 14:59
  • 169

git撤销最新的一次提交

执行: git reset --hard HEAD~1
  • likaiwalkman
  • likaiwalkman
  • 2016年11月30日 10:53
  • 203

git 取消commit

git 操作 git reset –hard commit_id 使用上面的命令进行回退commit 1commit 2commit 3get reset –hard commit3 将H...
  • px348402717
  • px348402717
  • 2016年11月09日 20:51
  • 761

Git-撤销修改(笔记)

有两种方法:git checkout -- a.cpp git reset HEAD a.cpp第一种是当你还未提交到暂存区,即还未git add时,撤销修改,返回最新的版本。 第二种是当你提交到了...
  • Ferre666
  • Ferre666
  • 2017年09月01日 16:43
  • 183
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:git-撤销修改
举报原因:
原因补充:

(最多只允许输入30个字)