基本操作
# 克隆远程仓库,该方法不需要创建仓库文件夹,在其上级使用就行。即不需要命令`git init`,`git pull`, `git branch`等
git clone <git-url>
# 先创建并进入仓库文件夹
git init # 创建本地仓库
git remote add origin <git-url> # 连接远程仓库,origin 是配置仓库的名称
git pull origin master# 拉取并合并远程分支
git merge origin/master # 合并分支
git remote set-url origin <new-url> <old-url> # 修改远程仓库,origin 是配置仓库的名称
git remote rm origin #移除远程仓库origin
git branch # 显示分支情况
git log # 查看历史提交记录
git blame <file> # 以列表形式查看指定文件的历史修改记录。
# 更改远程厂库后(远程厂库已配置好ssh),拉取让输密码。云效为例,可以改成其他远程厂库
ssh -T git@codeup.aliyun.com
删除已提交的文件
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch "dir/file.txt" ' --prune-empty --tag-name-filter cat -- --all
# 提交远程
git push origin --force --all
git push origin --force --tags
git for-each-ref --format='delete %(refname)' refs/original | git update-ref --stdin
git reflog expire --expire=now --all
git gc --prune=now
git count-objects -v
也可删除文件夹
git filter-branch --force --index-filter 'git rm -r --cached --ignore-unmatch "dir/subdir" ' --prune-empty --tag-name-filter cat -- --all
强制删除大文件,可优先参考
# 获取最大的前几个文件
git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -5 | awk '{print$1}')"
# 删除文件,将文件替换成要删除的文件(包含相对路径)
git filter-branch --force --index-filter 'git rm -rf --cached --ignore-unmatch 文件路径' --prune-empty --tag-name-filter cat -- --all
# 后续步骤,参考 https://blog.csdn.net/g291976422/article/details/105120681 。该文档前面也有另一种删除方案,原理基本一样。
回滚结点
// 查看前三个结点信息
git log -3
// 回滚到指定的版本
git reset --hard e377f60e28c8b84158
// 强制提交(origin:远程仓库名称,master:远程仓库分支)
git push -f origin master
代理设置
- 即使git使用的链接是https,可能使用的代理还是http的,所以最好http,https同时设置
// 查看当前代理设置
git config --global http.proxy
// 设置当前代理为 http://127.0.0.1:1080 或 socket5://127.0.0.1:1080
git config --global http.proxy 'http://127.0.0.1:1080'
git config --global https.proxy 'http://127.0.0.1:1080'
git config --global http.proxy 'socks5://127.0.0.1:1080'
git config --global https.proxy 'socks5://127.0.0.1:1080' /
// 删除 proxy git config --global --unset http.proxy
git config --global --unset https.proxy
sourcetree变得很慢时
git gc
git prune