git常见问题
FAQ
git如何清除提交记录?
项目如果走过了一个很长的开发周期以后,提交历史会很长,如果提交记录不重要,这种情况下可以删除掉历时记录。
- 创建一个干净的分支 使用
--orphan
参数
- 添加当前的所有文件
- 提交注释
- 删除原来的分支master
- 把当前分支重命名为master
- 把当前分支强行推送到远端
1
2
3
4
5
6
|
git checkout --orphan test
git add .
git commit -m "init"
git branch -D master
git branch -m master
git push -f origin master
|
git如何查看空间占用?
1
2
|
git count-objects -v # 查看 git 相关文件占用的空间
du -sh .git # 查看 .git 文件夹占用磁盘空间
|
如何查找git提交中涉及的大文件?
1
|
git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -5 | awk '{print$1}')"
|
如何删除大文件?
1
2
3
4
5
6
7
|
git filter-branch -f --prune-empty --index-filter 'git rm -rf --cached --ignore-unmatch big_file_name' --tag-name-filter cat -- --all
rm -Rf .git/refs/original
rm -Rf .git/logs/
git gc
git prune
git push --force
|
1
2
3
4
5
6
7
|
git filter-branch -f --prune-empty --index-filter 'git rm -rf --cached --ignore-unmatch tags' --tag-name-filter cat -- --all
rm -Rf .git/refs/original
rm -Rf .git/logs/
git gc
git prune
git push --force
|
git如何查看文件?
1
|
git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -18 | awk '{print$1}')"
|
git 使用config文件配置快捷访问
1
2
3
4
5
6
7
8
9
10
11
12
|
vim ~/.ssh/config
Host server1
HostName 127.0.0.1
Port 22
User root
IdentityFile ~/.ssh/id_rsa
Host server2
HostName 192.168.0.1
Port 22
User root
IdentityFile ~/.ssh/id_rsa
|
使用
git reset,git checkout 后依旧显示有修改,实际上没有修改怎么办?
1
|
File mode changed from 100755 to 100644
|
1
|
git config --global --add core.filemode false
|
git 拉取代码提示:Permission denied
- git 拉取代码提示:Permission denied (publickey,gssapi-with-mic,password)
1
2
3
|
ssh -vvv git@gitlab.com
#更换密钥
ssh-keygen -t ed25519
|
参考