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 撤销未提交的修改

checkout 恢复某个已修改的文件(撤销未提交的修改): $ git checkout file-name revert 还原已提交的修改(已经提交过的修改,可以反悔~) 还原最近一...

git 撤销未提交的修改

(1) git checkout 恢复某个已修改的文件(撤销未提交的修改): $ git checkout file-name 例如:git checkout src/com/android...
  • xbl1986
  • xbl1986
  • 2013年01月18日 09:28
  • 50166

Git撤销修改

http://blog.csdn.net/baple/article/details/39640129 git checkout . #本地所有修改的。没有的提交的,都返回到原来的状态 git...

Git 本地的撤销修改和删除操作

git本地的撤销修改和删除操作 第一:如果我知道要删掉那些内容的话,直接手动更改去掉那些需要的文件,然后add添加到暂存区,最后commit掉。 第二:我可以按以前的方法直接恢复到上一个版本。使用 ...

Git版本控制:Git查阅、撤销文件修改和撤销文件追踪

http://blog.csdn.net/pipisorry/article/details/47867097查看文件的修改历史git log --pretty=oneline 文件名 # 显示修改历...

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

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

git强制回滚+IDEA+GIT BASH

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

Git入门指南八:Git撤消操作

十二. Git撤消操作 12.1 修改最后一次提交 git commit --amend 1.新建一个文件 2.提交一个之前的更改 3.跟踪这个文件 4.跟前一次一起...

Git5--撤销修改

自然,你是不会犯错的。不过现在是凌晨两点,你正在赶一份工作报告,你在readme.txt中添加了一行: $ cat readme.txt Git is a distributed versio...

Git使用总结!

情景1:如何多人协作? 假若你已经clone了别人的仓库并且需要修改,最好的办法是建立自己的分支然后在合并,具体步骤如下: 1.建立一个自己的分支 git branch mybranch 此时...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:git-撤销修改
举报原因:
原因补充:

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