Git学习之修改最后一次提交、删除文件、重命名文件
Git学习之修改最后一次提交、删除文件、重命名文件
1. 修改最后一次提交
我们在实际开发中,难免会遇到如以下的情况:
- 当我们
commit
提交了后,发现有些文件漏传了,没有提交 - 提交后觉得这次提交的说明不够详细,想修改
- 本不想提交,却不小心提交了
遇到诸如此类的情况,我们有没有办法修改最后一次提交呢?答案是:有,你可以使用上一篇文章所说的reset
回滚快照实现,但是这是不是有点大题小作了,有没有更加简单的方法呢,答案是:有,你要相信Git足够强大,Git提供了以下的命令:
git commit --amend
使用这么命令就可以修改最后一次提交,而且不会添加新的版本快照,为了测试,我先提交了一次,然后我们使用git commit --amend
,修改提交声明。
然后我们使用git commit --amend
会进入到这个修改的界面,i
j进入插入编辑状态,Esc
退出编辑状态,shift + :
进入指令状态wq
保存退出,都是linux下的vim操作。
你也可以使用git commit --amend -m"注释"
直接修改
再次查看是否现在仓库里就存在一个快照:
可以看到就是一个快照,而且提交声明就是我们最后一次修改的内容。
2. 删除文件
如果你想删除一个文件,比如:一不小心就放到工作目录的不可描述的,难以置信的小图片。我们首先想到的是,直接手动删除这个文件,我们试试,删完后,我们查看下状态:
不好意思,只要加入了Git的跟踪,你的操作都会被察觉,这里可以看到,Git提示你,删除了一个文件,建议使用git add/rm <file>
更新删除操作,或者git checkout -- <file>
来丢弃你的删除操作,回滚文件,这里我们先把文件撤销回来,使用checkout.
文件搞回来之后,我们再次运行git status
可以看到工作区又是clean
的了。
但是还是没解决我们的我们的问题啊:Git到底如何删除文件?答案是:git rm <file>
这里我们用一张图片测试,图片,嘿嘿。先添加到暂存区,再提交。
现在使用git rm <file>
删除
我们到工作目录下看下:
看下状态:
它提示我们,删除了一个文件,这里的删除是将工作区和暂存区的文件删除了,仓库还有这个文件,所以它提示我们,如果想从仓库中删除这个文件,可以使用之前我们说的软回退git reset HEAD <file> ..
将HEAD指针指向上一个版本,即使回退。
这里有一个问题,如果你编辑的是一个文件,你修改了工作区的文件的内容,从而跟暂存区不一样,这时候你想删除这个文件,如下图:
Git会提示你一个错误,说这个文件在工作区和暂存区的内容不一致,你需要注意以下。如果你真的想删除这个文件也是可以的,直接强行,强行你懂的。使用git rm -f <file>
。
3. 重命名文件
当我们由于需求而需要修改文件名时,就涉及重命名文件,这里我们先手动的改动一个文件(words---->new_words)的名字,然后观察下状态:
Git提示删除了一个名为words
的文件,然后新建了一个名为new_words
的文件,实际我们只是改了个名字,好像Git并不是那么聪明。这里我们使用checkout 恢复下文件 。
在Git中我们重命名一个文件呢?有点类似linux中的重命名命令:
git mv <旧的名字> <新的名字>
看下工作目录: