zoukankan      html  css  js  c++  java
  • [git 学习篇] git checkout 撤销修改

    git status 查看当前创库情况

    liuzhipeng@exdroid43:~/pad/pad-test$ git status
    位于分支 master
    您的分支与上游分支 'origin/master' 一致。
    
    尚未暂存以备提交的变更:
      (使用 "git add <文件>..." 更新要提交的内容)
      (使用 "git checkout -- <文件>..." 丢弃工作区的改动)
    
            修改:         PadTest2.0/PadAutoTest/UiAutomator/pad/src/androidTest/java/com/softwinner/performance/benchmark/mark3d/AuTutuTest.java
            修改:         PadTest2.0/PadAutoTest/UiAutomator/pad/src/androidTest/java/com/softwinner/performance/benchmark/mark3d/AuTutuVideoTest.java
            修改:         PadTest2.0/PadAutoTest/UiAutomator/pad/src/androidTest/java/com/softwinner/performance/benchmark/mark3d/LinpackTest.java
            修改:         PadTest2.0/PadAutoTest/UiAutomator/pad/src/androidTest/java/com/softwinner/performance/benchmark/mark3d/Mark3DTest.java
            修改:         PadTest2.0/PadAutoTest/UiAutomator/pad/src/androidTest/java/com/softwinner/performance/benchmark/mark3d/MobileXPRTTest.java
            修改:         PadTest2.0/PadAutoTest/UiAutomator/pad/src/androidTest/java/com/softwinner/performance/benchmark/mark3d/UiAssistant.java
            修改:         PadTest2.0/PadAutoTest/UiAutomator/pad/src/androidTest/java/com/softwinner/performance/benchmark/mark3d/VellamoTest.java
            修改:         PadTest2.0/testcase/AI030002-performance-3DMark.py

    下面来解析git checkout的意思: git checkout --readme.txt

    命令git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:
    
    一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;(上一次的git commit 后,修改readme.txt 但没有执行git add,回到上一次的git commit后的结果)
    
    一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。(修改readme.txt,并且git add,然后又修改了readme.txt, 此时执行git checkout,回到git add 后的状态)
    
    总之,就是让这个文件回到最近一次git commit或git add时的状态。

    需求 ,现在我git add之后,但是我还想放弃git add,回到上一次git commit的状态,怎么办? (就是说撤销掉暂存区,回到工作区的状态)

    分两步执行:

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

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

    Git同样告诉我们,用命令git reset HEAD file可以把暂存区的修改撤销掉(unstage),重新放回工作区:
    
    $ git reset HEAD readme.txt
    Unstaged changes after reset:
    M       readme.txt

    git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。(HEAD^表示上一个版本,就是git log的第二次)

    总结时间:

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

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

  • 相关阅读:
    织梦开发——相关阅读likeart应用
    织梦标签教程
    织梦专题调用代码
    HIT 2543 Stone IV
    POJ 3680 Intervals
    HIT 2739 The Chinese Postman Problem
    POJ 1273 Drainage Ditches
    POJ 2455 Secret Milking Machine
    SPOJ 371 Boxes
    HIT 2715 Matrix3
  • 原文地址:https://www.cnblogs.com/liuzhipenglove/p/7068622.html
Copyright © 2011-2022 走看看