Git ---撤销操作(给你反悔机会)

来源:互联网 发布:即时对战游戏源码 编辑:程序博客网 时间:2024/04/30 02:42

概述:

人没有后悔,买**车可以(广告的思想就是:重复,学习也是:简单重复做),改一下台词,人没有后悔,Git可以有

1、撤销操作

注意:有些撤销操作是一次性,不可以恢复

撤销操作让我想起了,以前做班车去县里时候,班车从来不会按时间发车,而是是否坐动作满人,git 的暂存区就是班车,而发车相当于git提交,司机开始发动车走的时候,乘客说有人上厕所没到,司机熄火等人相当于git撤销动作,等人到了齐再一次打火开动。

Git中出现撤销一个过程就是:

第一:已经提交了   

第二:发现忘了一个文件

第三:再一次提交

2、取消暂存的文件

语法:git reset HEAD 文件名

语境:新增README 和修改 History.txt

$ git add *The following paths are ignored by one of your .gitignore files:aaUse -f if you really want to add them.warning: LF will be replaced by CRLF in README.The file will have its original line endings in your working directory.Administrator@USER-20170424ZG MINGW64 ~/grit (master)$ git statusOn branch masterYour branch is ahead of 'origin/master' by 12 commits.  (use "git push" to publish your local commits)Changes to be committed:  (use "git reset HEAD <file>..." to unstage)        modified:   History.txt        new file:   READMEAdministrator@USER-20170424ZG MINGW64 ~/grit (master)$ git reset HEAD READMEAdministrator@USER-20170424ZG MINGW64 ~/grit (master)$ git statusOn branch masterYour branch is ahead of 'origin/master' by 12 commits.  (use "git push" to publish your local commits)Changes to be committed:  (use "git reset HEAD <file>..." to unstage)        modified:   History.txtUntracked files:  (use "git add <file>..." to include in what will be committed)        README
第一:git add *  (将所有文件改变添加暂存区)

第二:git status (查看文件状态为Changes to be committed)

第三:git reset HEAD README 

第四:git status (发现 README状态为Untracked files)
注意:可以用参数 --hard 选项可以令git reset成为危险的命令(可能导致工作目录中所有当前进度丢失)

3.取消提交(从暂存区提交仓库)

Administrator@USER-20170424ZG MINGW64 ~/grit (master)$ git commit -m "第一次提交"[master 5a84c8a] 第一次提交 1 file changed, 1 insertion(+), 1 deletion(-)Administrator@USER-20170424ZG MINGW64 ~/grit (master)$ git add READMEwarning: LF will be replaced by CRLF in README.The file will have its original line endings in your working directory.Administrator@USER-20170424ZG MINGW64 ~/grit (master)$ git commit --amend -m "第二次提交"[master 1656426] 第二次提交 Date: Wed Jun 7 20:42:15 2017 +0800 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 READMEAdministrator@USER-20170424ZG MINGW64 ~/grit (master)$ git log --pretty=oneline  -61656426a0c93f1367cecfd16a958aa436757728b 第二次提交d072db805f1d38be723c80be102a76c3733699d8 Hello9ddce59dbacb7160fab09c4da14523e609e9428a 将计就计e9128101a2572cf0b2398ca5a281c796676d0352 我提交了README6ada7cad2883d636837d6072aa27cbc8f07988cb D:/install/Git/aa063c0f280259c2d2a97abc08bc27dbe0b01e6e6f README
第一:先提交History.txt

第二:发现README还提交进来,先把它加入暂存区

第三:撤销第二次提交

第四:查看日志(发现没有第一次提交记录)

4.撤销对文件的修改

如果想将文件恢复到某个提交的时候该如何操作

语法:git checkout -- 文件

Administrator@USER-20170424ZG MINGW64 ~/grit (master)$ echo "哈哈哈哈" > READMEAdministrator@USER-20170424ZG MINGW64 ~/grit (master)$ cat README哈哈哈哈Administrator@USER-20170424ZG MINGW64 ~/grit (master)$ git checkout -- READMEAdministrator@USER-20170424ZG MINGW64 ~/grit (master)$ cat READMEHello World
第一:修改READ文件内容

第二:查看文件内容是否改变

第三:恢复上一次提交版本

第四:查看文件的内容

非常重要:你需要知道git checkout -- [file]是一个危险的命令,这个很重要,你对那个文件做的任何修改都会消失,你只是拷贝了另个文件来覆盖它,除非你确定清楚不需要那个文件了,否则不要使用这个命令。

总结:只要Git上提交了,几乎所有的数据都是可以恢复的,但是如果没有提交数据丢失就找不回了。


原创粉丝点击