git的使用技巧(持续更新)
如何删除之前提交的commit
可以用下面的命令行:
git reset --hard HEAD~1;
git push origin HEAD --force;
注意:HEAD~1,还可以是要切换的commit的ID号。
根据–soft
–mixed
–hard
,会对working tree和index和HEAD进行重置:
git reset –mixed
:此为默认方式,不带任何参数的git reset
,即时这种方式,它回退到某个版本,只保留源码,回退commit和index信息。git reset –soft
:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可。git reset –hard
:彻底回退到某个版本,本地的源码也会变为上一个版本的内容。
网上也有下面的做法:
git reset --hard HEAD~1;
git revert HEAD;
但是,没有试过。
远端移除文件
执行如下命令:
git rm --cached "文件路径";
git commit;
忽略文件
总有些文件你不希望git帮你管理,那么就不要git add
这些文件,但是当你用git status -s
查询文件状态的时候,屏幕上总会出现这些文件untracked,这对于有强迫症的童鞋来说真是一件令人闹心的事,怎么办?别担心,下面的方法会让您没有后顾之忧。
我们可以新建一个gitignore文件,来忽略那些不愿意添加的文件或者文件夹。
如下:
# Matlab
*.mat
*.asv
*.fig
*.jpg
*.tif
*.bmp
data/
其中,*.mat
、*asv
……,是忽略特定类型的文件,而data/
是忽略‘data’文件夹,如此便可。
问题
- 文件只能也必须是.gitignore,文件只能也必须是.gitignore,文件只能也必须是.gitignore,重要的事情说三遍!!!不要加什么文件名,没有名字!人家就叫.gitignore。好多教程给.gitignore前加个C++,java,害的我折腾半天。
- 有可能.gitignore文件失效,别急,这是因为.gitignore文件是git管理你文件后建立的,后者你重新修改了.gitignore,忽略某文件,但是没有及时从暂存库中删掉该文件。而.gitignore只对那些untracked文件起作用,所以要在暂存库中删除已经tracked的文件。
如下:
git rm -r --cached data # data是文件夹名 从暂存库中删除文件夹,而工作区的文件夹仍在
# `git rm --cached *.jpg` *.jpg是文件名
# 也可以用`git rm -r --cached .`来删除暂存库中的所有文件和文件夹
git add . # 这时就不会添加那些不愿添加的文件了