有识

个人网 | 追寻一切真知灼见

用户工具

站点工具


侧边栏

博主公告

想读书,想旅游,想运动,但是没有时间?其实我们不是没有时间,只是没有真正把想做的事情,放在重要的位置上,或者干脆没时间搞清楚到底那件事情对你来说更重要。^_^ 欢迎大家收看《程序员带你学打羽毛球》 和博主一起加入运动的行列。 ease 11:53 - 08月02日




最新博文》更多博文

分类索引

博主简介
吕某某 Leo
河北人,网名:ease
资深IT菜鸟,创业者
兴趣爱好:
人工智能,运动,读书,coding
人生格言:
命由己造 相由心生 有容乃大 无欲则刚 》博主管理》关于博主


blog:ease:git:git-basic3

撤消操作

1)场景:上一次的提交存在问题:遗漏了文件,或者-m 信息写错了。

$ git commit -m 'initial commit'
$ git add forgotten_file
$ git commit --amend

如果没有做任何修改直接 –amend 则只修改提交信息

$ git commit --amend -m '修改的信息'

取消暂存的文件

2)场景:修改了两个文件,计划分别提交。但是意外输入了 git add . 存入了暂存区。

On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)

modified: f2.py
modified: f4.p


$ git reset HEAD f2.py
$ git reset -- f2.py

(仅仅修改暂存区,工作目录不受影响)

这个操作本质上说,就是从版本库恢复暂存区,因此刚刚 add . 就被取消了。
调用时加上 –hard 选项可以令 git reset 成为一个危险的命令(可能导致工作目录中所有当前进度丢失!)不加选项地调用 git reset 并不危险 — 它只会修改暂存区域。–hard 已经跟踪的文件将会被覆盖。(未跟踪不会被覆盖,但依然危险) 暂存区 和工作目录都会被修改。记住:未提交的东西,都无法被恢复,只要是提交过,都有可能被恢复。

3)场景:撤销工作目录刚刚 做过的修改。(针对已经跟踪的文件,不会删除和调整未跟踪文件)

On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)

modified: f2.py

$ git checkout – f2.py 即可。 将会从暂存区 恢复工作目录。

如果 修改1 添加到了暂存区 工作目录又进行了 修改2
$ git checkout HEAD f2.py 将会从版本库 同时恢复暂存区 和工作目录。

如果你仍然想保留对那个文件做出的修改,但是现在仍然需要撤消,我们将会在 Git 分支 介绍保存进度与分支;这些通常是更好的做法。 (分支要解决的问题)

blog/ease/git/git-basic3.txt · 最后更改: 03:42 - 09月02日 (外部编辑)