本文主要记录了git中,错误的撤销和文件的删除。


撤销修改

    这里有3中情况

  1. 改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。
  2. 不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了1,第二步,按照1操作。
  3. 已经提交了不合适的修改到版本库时,想要撤销本次提交,可以版本回退,不过前提是没有推送到远程库。
//第一种撤销:工作区撤销
ubuntu@myubuntu:~/joe/learngit$ vi readme.txt //工作区的错误还没有add到暂存区
ubuntu@myubuntu:~/joe/learngit$ git status
位于分支 master
尚未暂存以备提交的变更:
(使用 "git add <file>..." 更新要提交的内容)
(使用 "

git checkout -- <file>..."

 丢弃工作区的改动)

    修改:     readme.txt

修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
ubuntu@myubuntu:~/joe/learngit$

git checkout --

 readme.txt
ubuntu@myubuntu:~/joe/learngit$ vi readme.txt
//第二种撤销:暂存区撤销
ubuntu@myubuntu:~/joe/learngit$ vi readme.txt
ubuntu@myubuntu:~/joe/learngit$ git add readme.txt //错误的文件已经提交到暂存区了
ubuntu@myubuntu:~/joe/learngit$ git status
位于分支 master
要提交的变更:
(使用 "

git reset HEAD <file>..."

 撤出暂存区)

    修改:     readme.txt

ubuntu@myubuntu:~/joe/learngit$ git reset HEAD readme.txt
重置后撤出暂存区的变更:
M readme.txt
ubuntu@myubuntu:~/joe/learngit$ vi readme.txt
ubuntu@myubuntu:~/joe/learngit$ git status //撤出暂存区后,还需使用checkout丢弃工作区的改动
位于分支 master
尚未暂存以备提交的变更:
(使用 "git add <file>..." 更新要提交的内容)
(使用 "git checkout -- <file>..." 丢弃工作区的改动) 修改: readme.txt 修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
ubuntu@myubuntu:~/joe/learngit$

git checkout --

 readme.txt
ubuntu@myubuntu:~/joe/learngit$ vi readme.txt
//第三种已经提交,使用版本回退(学习笔记2)

文件的删除

  1. 使用rm删除文件,然后git add filename添加到暂存区,git commit 提交。
  2. 直接使用git rm filename ,不用git add直接git commit即可。
//第一种方法git rm file
ubuntu@myubuntu:~/joe/learngit$ ls
abc.c readme.txt
ubuntu@myubuntu:~/joe/learngit$

git rm

 abc.c
rm 'abc.c'
ubuntu@myubuntu:~/joe/learngit$ git status
位于分支 master
要提交的变更:
(使用 "git reset HEAD <file>..." 撤出暂存区) 删除: abc.c ubuntu@myubuntu:~/joe/learngit$

git commit -m "del abc"

[master 020f927] del abc
file changed, insertions(+), deletions(-)
delete mode abc.c
ubuntu@myubuntu:~/joe/learngit$ git status
位于分支 master
无文件要提交,干净的工作区
ubuntu@myubuntu:~/joe/learngit$ ls
readme.txt
//第二种方法rm file
ubuntu@myubuntu:~/joe/learngit$ ls
ab.c readme.txt
ubuntu@myubuntu:~/joe/learngit$ rm ab.c
ubuntu@myubuntu:~/joe/learngit$ ls
readme.txt
ubuntu@myubuntu:~/joe/learngit$ git status
位于分支 master
尚未暂存以备提交的变更:
(使用 "git add/rm <file>..." 更新要提交的内容)
(使用 "git checkout -- <file>..." 丢弃工作区的改动) 删除: ab.c 修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
ubuntu@myubuntu:~/joe/learngit$ git add ab.c
ubuntu@myubuntu:~/joe/learngit$ git status
位于分支 master
要提交的变更:
(使用 "git reset HEAD <file>..." 撤出暂存区) 删除: ab.c ubuntu@myubuntu:~/joe/learngit$

git commit -m "del ab.c"

[master 0ad1dfe] del ab.c
file changed, insertions(+), deletions(-)
delete mode ab.c
ubuntu@myubuntu:~/joe/learngit$ git status
位于分支 master
无文件要提交,干净的工作区

Git学习笔记(3)——撤销修改和文件的删除的更多相关文章

  1. 【Git学习笔记】撤销修改

    工作区下的.git文件夹其实是Git的版本库,Git的版本库里存了很多东西,其中最重要的就是称为 stage 的暂存区,还有Git为我们自动创建的第一个分支 master ,以及指向master的一个 ...

  2. Git学习笔记三--管理修改、撤销修改、删除文件

    1.管理修改 什么是修改?比如你新增了一行,这就是一个修改,删除了一行,也是一个修改,更改了某些字符,也是一个修改,删了一些又加了一些,也是一个修改,甚至创建一个新文件,也算一个修改. 为什么说Git ...

  3. Git学习笔记05-撤销修改

    使用 git checkout -- file可以撤销工作区的修改 一种是修改后还没有放到暂存区,撤销修改回到和版本库一模一样的状态 lesson.txt文件已经提交到版本库了,内容如图. ​ 修改一 ...

  4. Git学习笔记04-管理修改

    Git跟踪并管理的是修改,而非文件.新增文件,修改一行,删除一点,都算是修改. 在.git工作区新增一个文件,test.txt,输入test git ...然后git add ​ ​ add之后修改t ...

  5. 【转帖】Git学习笔记 记录一下

    本文内容参考了廖雪峰老师的博文,并做了适当整理,方便大家查阅. 原帖地址 https://wangfanggang.com/Git/git/ 常用命令 仓库初始化 - git init 1 git i ...

  6. GIT学习笔记(2):时光机穿梭与远程仓库

    GIT学习笔记(2):时光机穿梭与远程仓库 撤销操作 1.GIT如何跟踪修改 在我们修改了代码内容后,执行了git add和git commit命令来将其交由Git进行版本控制.我们前面举的例子是这样 ...

  7. Git学习笔记(10)——搭建Git服务器

    本文主要记录了Git服务器的搭建,以及一些其他的配置,和最后的小总结. Git远程仓库服务器 其实远程仓库和本地仓库没啥不同,远程仓库只是每天24小时开机为大家服务,所以叫做服务器.我们完全可以把自己 ...

  8. Git学习笔记---协作的一般流程

    一般的操作流程 1.pull 王小坤与另一个同事张大炮一起开发一个项目,张大炮昨天修改了数据库读写的api,优化了执行速度,并把read()函数改名成了Read(),下午下班之前把这些代码push到服 ...

  9. GIT学习笔记(1):创建版本库

    GIT学习笔记(1):创建版本库 创建版本库 1.创建合适目录并初始化为仓库 版本库即需要交由Git进行版本控制的目录,其下所有文件的修改.删除,Git都能跟踪还原. 说明:初始化后,当前目录下会多出 ...

随机推荐

  1. 编辑器sublime text3和插件package control、Sidebar Enhancements插件安装

    (1)编辑器sublime text3的安装:选择自己需要的版本下载安装:http://www.sublimetext.com/3 (2)package control插件安装:https://pac ...

  2. ServletContext获取的方法

    ServletContext  代表当前web应用 如何获取ServletContext对象 ServletConfig对象中维护了ServletContext对象的引用,可以通过以下方式获得 Ser ...

  3. mvc+mysql+EF

    网上有很多关于EF在联机情况下利用nuget管理器安装的案例,我就讲一下脱机状况吧! 一.建立一个文件夹,例如D:/Packages 放入安装EF和mysql需要的包:EntityFramework. ...

  4. 1813. M进制数问题

    1813. M进制数问题 Constraints Time Limit: 1 secs, Memory Limit: 32 MB Description 试用 C++的类来表示一般进制数. 给定 2 ...

  5. vuejs 和 element 搭建的一个后台管理界面

    介绍: 这是一个用vuejs2.0和element搭建的后台管理界面. 相关技术: vuejs2.0:渐进式JavaScript框架,易用.灵活.高效,似乎任何规模的应用都适用. element:基于 ...

  6. .Net Web项目安装包制作 (一)

    来源:http://www.cnblogs.com/huxj/archive/2010/09/10/1823637.html

  7. 透明activity来实现悬浮蔗罩

    第一步, activity的代码, 关键代码是进出动画采用淡入淡出方式,让蔗罩出现消失更自然,全屏 public class RobotGuidceV2Activity extends RoboAct ...

  8. 如何定制Activity的标题栏

    requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); setContentView(R.layout.main); //自定义标题栏        mW ...

  9. [转]如何拷贝一个 SQL Server 的表

    这篇短文将介绍几种拷贝 SQL Server 表的方法.第一种方式是最简单的在同一个数据库里将表拷贝到另外一个表.你需要记住的是,拷贝表的时候并不会拷贝表的约束和索引.下面是代码模板和简单的使用方法: ...

  10. iOS Developer:真机测试

    如果出现ios development一项为灰色不可点击状态,苹果的说法是 如果您要为此电脑添加证书,请revoke以前的证书后添加,或者通过以前的mac导出证书 原文不记得了,大概这个意思,苹果不希 ...