Git 撤销所有未提交(Commit)的内容
2018-09-20 17:25
253 查看
撸了好多代码,但是突然设计改了(~~o(>_<)o ~~);或者引入个第三方库,后来又发现用不着,想删掉,但文件太多了(比如几百个);那,怎么办呢,都不想了...Git 比人聪明,所以能很方便的帮我们解决问题。
场景一
需要撤销的内容文件属于未跟踪的状态。如下命令产生的场景:
mkdir git-tmp cd git-tmp git init echo '第1次输入的内容' > file1.log git status
以上命令产生了
file1.log文件,该文件未被执行过
git add、也不在版本库中。清除此类未被跟踪的文件:
git clean -fdx
场景二
需要撤销的内容已被
git add暂存,但未执行
git commit提交。如下命令产生的场景:
mkdir git-tmp cd git-tmp git init echo '第1次输入的内容' > file1.log git add . git status
那么执行以下命令即可取消文件的暂存:
git rm --cached -r .
或者,使用:
git reset
也可以取消所有文件的暂存。
然后,我们再执行
git clean -fdx清除文件。
场景三
已提交在版本库中的文件发生了变更、但修改的内容未暂存。如下命令产生的场景:
mkdir git-tmp cd git-tmp git init echo '第1次输入的内容' >> file1.log git add . git commit -m '第1次提交' echo '第2次输入的内容' >> file1.log git status
这种情况,我们可用:
git checkout .
就可以清除所有变更内容。
场景四
已在版本库中的文件发生了变更、且已
git add暂存。如下命令产生的场景:
mkdir git-tmp cd git-tmp git init echo '第1次输入的内容' >> file1.log git add . git commit -m '第1次提交' echo '第2次输入的内容' >> file1.log git add . git status
这种情况,比场景三仅多了步暂存,那我们可以先取消暂存、然后再检出:
git reset git checkout .
也就是场景二和场景三的混合情况。
总结
我们以上所有场景都是内容未被提交(commit)的情况下。如果是撤销提交操作,那就是其他方法了。
基于以上,我们发现,如果对于已修改的所有内容,我们都不想要了,想回到最干净的上个提交版本的状态。那么,3个命令就可以搞定一切:
git reset git checkout . git clean -fdx
最后,再说个小白都能解决该类问题的工具 —— SourceTree,自行尝试吧。
相关文章推荐
- git在未提交commit之前,撤销回退所有操作
- Git-撤销(回退)已经add,commit或push的提交
- git 如何更改某个提交内容/如何把当前改动追加到某次commit上? git rebase
- git 修改最后一次提交的用户名 或者 commit的内容
- Git-撤销(回退)已经add,commit或push的提交
- Git的纯命令操作,Install,Clone , Commit,Push,Pull,版本回退,撤销更新,分支的创建/切换/更新/提交/合并,代码冲突
- 【Git】先commit后pull由于版本冲突,提交内容看不到的解决方法
- Git的纯命令操作,Install,Clone , Commit,Push,Pull,版本回退,撤销更新,分支的创建/切换/更新/提交/合并,代码冲突
- git 创建、提交代码仓库,查看修改内容、撤销修改内容
- Git log(可以显示所有提交过的版本信息)和reflog(可以查看所有分支的所有操作记录(包括commit和reset的操作))
- 提交内容到版本库:git commit
- git撤销提交到remote的commit
- Git的纯命令操作,Install,Clone , Commit,Push,Pull,版本回退,撤销更新,分支的创建/切换/更新/提交/合并,代码冲突
- git撤销本地所有未提交的更改
- Git撤销已经推送(push)至远端仓库的提交(commit)信息
- git 修改最后一次提交的用户名 或者 commit的内容
- git查看commit历史,某次commit修改内容,指定文件修改历史
- git 撤销commit
- 【Git】常用命令commit提交,push推送,merge,添加分支branch
- 使用git命令修改指定的commit提交记录并提交到远程服务器的方法