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
浙公网安备 33010602011771号