你的位置:首页 > ASP.net教程

[ASP.net教程]Git学习笔记(3)——撤销修改和文件的删除


本文主要记录了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.txtubuntu@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.txtubuntu@myubuntu:~/joe/learngit$ git reset HEAD readme.txt重置后撤出暂存区的变更:M  readme.txtubuntu@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.txtubuntu@myubuntu:~/joe/learngit$ vi readme.txt//第三种已经提交,使用版本回退(学习笔记2)


文件的删除

  1. 使用rm删除文件,然后git add filename添加到暂存区,git commit 提交。
  2. 直接使用git rm filename ,不用git add直接git commit即可。
//第一种方法git rm fileubuntu@myubuntu:~/joe/learngit$ lsabc.c readme.txtubuntu@myubuntu:~/joe/learngit$ 
git rm
 abc.c rm 'abc.c'ubuntu@myubuntu:~/joe/learngit$ git status位于分支 master要提交的变更: (使用 "git reset HEAD <file>..." 撤出暂存区)  删除:   abc.cubuntu@myubuntu:~/joe/learngit$ 
git commit -m "del abc"
[master 020f927] del abc 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 abc.cubuntu@myubuntu:~/joe/learngit$ git status位于分支 master无文件要提交,干净的工作区ubuntu@myubuntu:~/joe/learngit$ lsreadme.txt//第二种方法rm fileubuntu@myubuntu:~/joe/learngit$ lsab.c readme.txtubuntu@myubuntu:~/joe/learngit$ rm ab.cubuntu@myubuntu:~/joe/learngit$ lsreadme.txtubuntu@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.cubuntu@myubuntu:~/joe/learngit$ 
git commit -m "del ab.c"
[master 0ad1dfe] del ab.c 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 ab.cubuntu@myubuntu:~/joe/learngit$ git status位于分支 master无文件要提交,干净的工作区