Git常用操作
1 .gitignore 规则不生效的解决办法
把某些目录或文件加入忽略规则发现并未生效,原因是.gitignore
只能忽略那些原来没有被追踪的文件,如果某
些文件已经被纳入了版本管理中,则修改.gitignore
是无效的。那么解决方法就是先把本地缓存删除(改变成未
被追踪状态),然后再提交:
|
|
2 修改提交历史,清理误提交文件
使用场景:一不小心把 node_modules 目录加入git仓库了,导致仓库很大
核弹级操作,注意备份
2.1 已知大文件
|
|
2.2 未知大文件
2.2.1 识别出最大的文件
|
|
将不需要的文件从历史记录的所有 tree 中移除
|
|
重新关联远程仓库
|
|
2.2.2 强制推送
|
|
3 清除敏感信息
在很多情况,我们由于疏忽会将一些敏感信息误传到Github上面去。 尽管我们可以使用git rm
将包含敏感信息文件删除掉,然后重新提交上传,文件就不会在 GitHub 中的文件列表显示。 但是这并不能完全将敏感信息文件从 GitHub 中完全删除,commit history
仍然会有敏感信息的文件的残留,我们仍然可以从 GitHub 中的commit history
中访问到文件。
如果想要将敏感信息文件完全删除。不仅需要将文件从 GitHub 中的文件列表中删除,同时还需要将文件从 GitHub 的commit history
中的 文件相关信息删除。
删除commit history
文件相关信息,主要有两种方法:
- filter-branch
- BFG
本文只探讨filter-branch的使用
使用 git 自带的git filter-branch
命令来实现。
此命令会将当前存在的文件也删除,注意备份。
|
|
git filter-branch 已不再推荐使用,推荐使用 git filter-repo
|
|
上传覆盖 GitHub 的commit history
|
|
PATH-TO-YOUR-FILE-WITH-SENSITIVE-DATA 是你需要删除的敏感信息文件名
例如:
|
|
以上命令就会删除test/zhangsan.txt
4 每次git pull/push时都提示输入账号密码
先cd到根目录,执行git config --global credential.helper store
命令
|
|
执行之后会在.gitconfig文件中多加红色字体项
|
|
之后cd到项目目录,执行git pull
命令,会提示输入账号密码。输完这一次以后就不再需要,并且会在根目录生成一个.git-credentials
文件
|
|
之后pull/push
代码都不再需要输入账号密码了~
如果这个时候,还是提示需要输入账号,那就要进项目的根目录,.git 目录的 config里 找到
|
|
修改这里的url