mageboo

导航

git使用(2)

撤销修改

1.修改文件

[root@baseserver gittest]# vi test.txt      ##修改test.txt文件
[root@baseserver gittest]# git status       ##查看仓库状态
位于分支 master
尚未暂存以备提交的变更:
  (使用 "git add <文件>..." 更新要提交的内容)
  (使用 "git checkout -- <文件>..." 丢弃工作区的改动)

        修改:     test.txt

修改尚未加入提交(使用 "git add" 和/或 "git commit -a")

2.撤销修改

[root@baseserver gittest]# git checkout -- test.txt    ##此命令会撤销修改(并未将修改加入提交,注意--,如果没有则为切换分支)
[root@baseserver gittest]# git status                  ##查看仓库状态,已撤销
位于分支 master
nothing to commit, working tree clean

3.修改文件,并加入提交

[root@baseserver gittest]# vi test.txt                 ##修改test.txt文件
[root@baseserver gittest]# git status                  ##查看仓库状态
位于分支 master
尚未暂存以备提交的变更:
  (使用 "git add <文件>..." 更新要提交的内容)
  (使用 "git checkout -- <文件>..." 丢弃工作区的改动)

        修改:     test.txt

修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
[root@baseserver gittest]# git add test.txt           ##加入提交
[root@baseserver gittest]# git status                 ##查看仓库状态
位于分支 master
要提交的变更:
  (使用 "git reset HEAD <文件>..." 以取消暂存)

        修改:     test.txt

4.执行撤销修改,未成功

[root@baseserver gittest]# git checkout -- test.txt   ##执行撤销修改
[root@baseserver gittest]# git status                 ##查看状态,发现未撤销
位于分支 master
要提交的变更:
  (使用 "git reset HEAD <文件>..." 以取消暂存)

        修改:     test.txt

5.取消该修改加入提交,并未撤销文件的修改

[root@baseserver gittest]# git reset HEAD test.txt    ##根据提示,此命令将文件取消加入提交,但并未对文件进行撤销修改
重置后取消暂存的变更:
M       test.txt
[root@baseserver gittest]# git status                 ##查看仓库状态,发现已取消加入提交
位于分支 master
尚未暂存以备提交的变更:
  (使用 "git add <文件>..." 更新要提交的内容)
  (使用 "git checkout -- <文件>..." 丢弃工作区的改动)

        修改:     test.txt

修改尚未加入提交(使用 "git add" 和/或 "git commit -a")

6.再次执行撤销修改操作,成功

[root@baseserver gittest]# git checkout -- test.txt  ##再次执行撤销修改命令
[root@baseserver gittest]# git status                ##查看仓库状态,发现已撤销修改
位于分支 master
nothing to commit, working tree clean

删除文件

1.创建文件test2.txt并提交

[root@baseserver gittest]# git add test2.txt 
[root@baseserver gittest]# git commit -m "add test2"

2.删除文件test2.txt

[root@baseserver gittest]# rm test2.txt    ##删除test2.txt
[root@baseserver gittest]# git status
位于分支 master
尚未暂存以备提交的变更:
  (使用 "git add/rm <文件>..." 更新要提交的内容)
  (使用 "git checkout -- <文件>..." 丢弃工作区的改动)

        删除:     test2.txt

修改尚未加入提交(使用 "git add" 和/或 "git commit -a")

3.提交删除

[root@baseserver gittest]# git rm test2.txt         ##类似git add,将删除加入提交
rm 'test2.txt'
[root@baseserver gittest]# git commit -m "delete test2"   ##提交修改
[master 94d6b5b] delete test2
 1 file changed, 1 deletion(-)
 delete mode 100644 test2.txt

4.如果是错误删除,则可通过git checkout -- 恢复该文件

[root@baseserver gittest]# git checkout -- test2.txt

5.如果已删除文件并且加入提交,增需要先取消加入提交,再恢复该文件

[root@baseserver gittest]# rm test2.txt              ##删除文件
[root@baseserver gittest]# git rm test2.txt          ##加入提交
rm 'test2.txt'
[root@baseserver gittest]# git checkout -- test2.txt ##撤销删除,执行结果为不生效
error: pathspec 'test2.txt' did not match any file(s) known to git.
[root@baseserver gittest]# git reset HEAD test2.txt  ##取消加入提交
重置后取消暂存的变更:
D       test2.txt
[root@baseserver gittest]# ll                        ##文件并未恢复
总用量 4
-rw-r--r--. 1 root root 146 12月 26 11:44 test.txt
[root@baseserver gittest]# git checkout -- test2.txt ##执行撤销删除
[root@baseserver gittest]# ll                        ##文件恢复
总用量 8
-rw-r--r--. 1 root root  17 12月 26 14:17 test2.txt
-rw-r--r--. 1 root root 146 12月 26 11:44 test.txt

6.对于5,如果要恢复整个仓库到当前状态,可用git reset命令

[root@baseserver gittest]# rm test2.txt      ##删除test2.txt
[root@baseserver gittest]# git rm test2.txt  ##加入提交
rm 'test2.txt'
[root@baseserver gittest]# ll                ##文件已删除
总用量 4
-rw-r--r--. 1 root root 146 12月 26 11:44 test.txt
[root@baseserver gittest]# git reset --hard HEAD   ##恢复整个仓库到HEAD
HEAD 现在位于 286201d add test2:
[root@baseserver gittest]# ll                ##文件已恢复
总用量 8
-rw-r--r--. 1 root root  17 12月 26 14:31 test2.txt
-rw-r--r--. 1 root root 146 12月 26 11:44 test.txt

posted on 2024-12-26 11:52  mageboo  阅读(20)  评论(0)    收藏  举报