2016/01/13开始学习git:管理修改、撤销修改

一、管理修改

  1. 第一次修改readme.txt       :  增加一行Git tracks changes.
  2. 添加readme.txt                :       git add readme.txt
  3. 第二次修改readme.txt        :  修改Git tracks changes.Git tracks changes of files.
  4. 提交readme.txt                :     git commit -m "git tracks changes"
$ git diff HEAD -- readme.txt 命令可以查看工作区和版本库里面最新版本的区别
-Git tracks changes.
+Git tracks changes of files.

发现:只提交了第一次,没有提交第二次的修改=========》Git管理的是修改,当你用git add命令后,在工作区的第一次修改被放入暂存区,准备提交,但是,在工作区的第二次修改并没有放入暂存区,所以,git commit只负责把暂存区的修改提交了,也就是第一次的修改被提交了,第二次的修改不会被提交。

每次修改后都需要add

二、撤销修改

readme.txt增加一句:My stupid boss still prefers SVN.

git status可以查看到库状态的变化

1.如果没有add

方法1、直接在工作区删除

方法2、git checkout -- readme.txt

2.已经add

用命令git reset HEAD file可以把暂存区的修改撤销掉(unstage),重新放回工作区:

$ git reset HEAD readme.txt                  撤销暂存区
Unstaged changes after reset:
M       readme.txt

asus@asus-PC MINGW64 /e/learngit (master)
$ git status                                         查看库状态
On branch master
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:   readme.txt

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

asus@asus-PC MINGW64 /e/learngit (master)
$ git checkout -- readme.txt                文件取消修改

asus@asus-PC MINGW64 /e/learngit (master)
$ git status                                        暂存区clean、文件modified已取消
On branch master
nothing to commit, working directory clean

asus@asus-PC MINGW64 /e/learngit (master)
$

小结

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

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

场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。

原文地址:https://www.cnblogs.com/lao-wan/p/5126056.html