zoukankan      html  css  js  c++  java
  • Git管理修改、撤销和删除文件

    备注:

    本文参考于廖雪峰老师的博客Git教程。依照其博客进行学习和记录,感谢其无私分享,也欢迎各位查看原文。

    知识点

    • Git跟踪和管理的的是修改,而不是文件

    • git checkout -- file,会将文件撤销到和git add时的状态一样,即git checkout -- file会将工作区的文件撤销到与暂存区(stage)一致

    • git checkout -- file命令中,如果没有--,就变成了“切换到另一个分支”的命令

    • git reset HEAD file既可以回退版本,也可以把添加到暂存区的修改回退到工作区,HEAD表示最新版本

    • 删除文件,git rm file,git commit -m"..."

    管理修改

    Git不同于其他版本控制系统,Git跟踪和管理的的是修改,而不是文件

    新增一行、删除一行、修改字符、删除又增加内容、创建新文件等,都是修改

    Git通过提交放入暂存区的修改,用来管理修改,而不是管理原文件。

    撤销修改

    在实际中,(虽然不常发生)总是会出现发生一些问题需要撤销修改。

    • 比如:在文件中添加一行无意义的特殊字符
    liu@liu-virtual-machine:~/gitTest$ cat readme.txt
    
    `this is a test that I learning and use git version control system
    this is a beginning
    i Add a new line information in the end of readme.txt file
    $%^%&^*&&(**)(*)*&^*(*&&*&YTRYYIN
    

    没有git add添加到暂存区时的撤销

    • 此时,查看git status如下:
    liu@liu-virtual-machine:~/gitTest$ git status
    位于分支 master
    尚未暂存以备提交的变更:
      (使用 "git add <文件>..." 更新要提交的内容)
      (使用 "git checkout -- <文件>..." 丢弃工作区的改动)
    
    	修改:     readme.txt
    
    修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
    
    • Git提示,git checkout -- file可以丢弃工作区的改动
    git checkout -- readme.txt
    

    git checkout -- readme.txt会把readme.txt文件在工作区的修改全部撤销。

    git checkout -- file,会将文件撤销到和git add时的状态一样,即git checkout -- file会将工作区的文件撤销到与暂存区(stage)一致

    git checkout -- file作用在暂存区(stage),当git add添加到暂存区后,git status不在显示git checkout -- file命令提示

    可自行测试

    • 此时文件内容就回到了原来状态
    $ cat readme.txt
    
    `this is a test that I learning and use git version control system
    this is a beginning
    i Add a new line information in the end of readme.txt file
    

    git checkout -- file命令中,如果没有--,就变成了“切换到另一个分支”的命令

    git add添加到暂存区后的撤销

    当我们git add后,发现需要撤销,此时查看git status状态

    $ git status
    位于分支 master
    要提交的变更:
      (使用 "git reset HEAD <文件>..." 以取消暂存)
    
    	修改:     readme.txt
    

    Git提示,使用 git reset HEAD file可以把添加到暂存区的修改撤销(unstage

    $ git reset HEAD readme.txt
    重置后取消暂存的变更:
    M	readme.txt
    
    • git reset 既可以回退版本,也可以把添加到暂存区的修改回退到工作区,HEAD表示最新版本

    • 此时查看git status,暂存区没有修改,是干净的,工作区有修改。

    $ git status
    位于分支 master
    尚未暂存以备提交的变更:
      (使用 "git add <文件>..." 更新要提交的内容)
      (使用 "git checkout -- <文件>..." 丢弃工作区的改动)
    
    	修改:     readme.txt
    
    修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
    
    • 现在可以使用git checkout -- readme.txt丢弃工作区的修改。然后查看,修改的文件已经回到原来状态
    $ git checkout -- readme.txt
    $ cat readme.txt
    
    `this is a test that I learning and use git version control system
    this is a beginning
    i Add a new line information in the end of readme.txt file
    

    撤销成功

    git commit提交后的撤销

    对于已经commit提交到版本库的撤销,可以使用版本回退更改。

    如果你提交了远程仓库,则需要另行处理。

    删除文件

    Git中,删除也是一个修改操作.

    首先新建一个test.txt文件,添加并提交到仓库

    • 当我们把目录下的文件删除后
    $ rm test.txt
    
    • 此时,工作区和版本库变得不一致
    $ git status
    位于分支 master
    尚未暂存以备提交的变更:
      (使用 "git add/rm <文件>..." 更新要提交的内容)
      (使用 "git checkout -- <文件>..." 丢弃工作区的改动)
    
    	删除:     test.txt
    
    修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
    

    git status指出删除了test.txt文件。

    • 现在有两种操作:1、确定从版本库中删除文件,2、从暂存区把误删的文件恢复

    确定从版本库中删除文件

    • 使用git rm删除文件并git commit提交
    $ git rm test.txt
    rm 'test.txt'
    $ git status
    位于分支 master
    要提交的变更:
      (使用 "git reset HEAD <文件>..." 以取消暂存)
    
    	删除:     test.txt
    
    $ git commit -m"remove test.txt"
    [master 6a0f133] remove test.txt
     1 file changed, 0 insertions(+), 0 deletions(-)
     delete mode 100644 test.txt
    $ git status
    位于分支 master
    无文件要提交,干净的工作区
    

    从暂存区把误删的文件恢复

    • 使用git checkout -- file从暂存区恢复误删的文件(本质还是丢弃工作区的改动)
    $ git checkout -- test.txt
    
    作者: 代码迷途
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意原创文章必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
    非原创文章若有需要,建议直接联系原文作者或保留声明情况下转载原文
  • 相关阅读:
    Flask上下文管理及源码刨析
    Python数据库连接池DBUtils
    装饰器的修复wraps,偏函数partial 以及chain
    unity官方案例精讲(第三章)--星际航行游戏Space Shooter
    c#多态性
    C# 继承
    c#类(class)
    一、事件函数的执行顺序(脚本的生命周期)
    一、Vuforia_AR
    四、其它(一)
  • 原文地址:https://www.cnblogs.com/codemissing/p/git_manage_file.html
Copyright © 2011-2022 走看看