Git 笔记
安装 Git & 更新 Git
MacOS
推荐使用 Homebrew 管理,安装 Git:brew install git
,更新当前 Git 版本:brew update && brew upgrade
。
如果升级失败请尝试改变 Git 的指向:
- 查看指向
which git
默认为 :/usr/bin/git - 查看版本
git --version
- 更改指向
brew link git --overwrite
- 更改后再次查看指向
which git
修改后为:/usr/local/bin/git - 如果没有改变重启终端再查看一下指向
which git
- 查看版本
git --version
- 更改后再次查看指向
Windows
推荐通过官网下载新版,Git 2.16.1 之前的版本请通过官网重新安装,之后的版本更新当前 Git 版本:git update-git-for-windows
。
参考资料
Git GUI Clients Git 可视化操作客户端
- 查看 Windows、Mac、Linux、Android、iOS 全部 Git GUI
- 推荐 GitHub Desktop ,支持 Windows、Mac
重置仓库清理仓库记录(note:体验整个操作过程只是把本地的记录清理了,服务端也清理了,但是还是占用了空间,标识这波操作没有完全成功!!!)
- 安装 git filter-repo,通过 Homebrew:
brew install git-filter-repo
,通过 pippip3 install git-filter-repo
- 使用
--bare
和克隆存储库的新副本--mirror
:git clone --bare --mirror https://your/project.git
- 后面操作前请先进入刚刚克隆的仓库目录
- 进入刚刚克隆的仓库:
cd project.git
project 替换为你自己的仓库名称 - 我从一开始执行命令就是在原仓库本地目录执行的,如果要强制该当前仓库可以在后面目录中增加
--force
。使用强制前请确保仓库有做备份,避免犯下无法挽回的错误。清空部分文件后 git config 有些内容也被清掉了(不建议像我这样直接在原仓库操作)。所以如果你在原仓库修改,提交前或提示无法提交时检测下 gitconfig 文件的完整性。
- 进入刚刚克隆的仓库:
- 使用
git filter-repo
,从存储库的历史记录中清除所有文件。- 请参阅 git filter-repo文档获得更多操作方法,根据个人需求,常用方法如下:
- 清除大文件:
git filter-repo --strip-blobs-bigger-than 10M
将 10M 修改为你想清楚超过该容量大小的文件 - 删除特定路径大文件:
git filter-repo --path path/to/big/file.m4v --invert-paths
- 删除特定的文件(一个或者多个):
git filter-repo --path README.md --path site/index.html
- 删除任何目录下的 .DS_Store 文件:
git filter-repo --invert-paths --path '.DS_Store' --use-base-name
或者git filter-repo --invert-paths --path-glob '*/.DS_Store' --path '.DS_Store'
- 清除大文件:
- 请参阅 git filter-repo文档获得更多操作方法,根据个人需求,常用方法如下:
- 强制推送覆盖所有分支:git push origin –force ‘refs/heads/*’
- 如果是受保护分支可能会操作失败,如果要执行先关闭分支保护功能, Gitlab 关闭方法:设置”➔“存储库”➔“受保护的分支”。
- gitlab 在设置中清理了以后依旧存储大小还是没有缩小,
- “设置”>“存储库”。
- 上载对象列表。一个commit-map
- 文件由 git filter-repo 创建,位于在 .git/filter-repo 目录中。
参考资料
Mac Git 生成 SSH key
配置账户
accountName 替换成你的用户名。 youer@mail.com 替换成你你的邮箱地址。
git config --global user.name "accountName" // 用户名,建议拼音或英文
git config --global user.email "youer@mail.com" // 邮箱地址
生成 key
passphrase 可以为空。 youer@mail.com 替换成你你的邮箱地址。
Mac 生成的 ssh key 会存放在 /Users/yourID/.ssh/id_rsa.pub
,yourID 替换成你用户目录名称。
ssh-keygen -t rsa -C "youer@mail.com"
将 pub 文件中内容添加到 gitlab、github、gitee SSH 配置中
添加完后,测一下是否正常,以下只做 gitlab 和 github 的演示,具体的 ssh 测试方法可以通过你仓库的 ssh 链接提取。
ssh -T git@gitlab.com
ssh -T git@gitlab.com
参考
仓库克隆和迁移
仓库迁移
将 Github 上想要导入的项目完整克隆到本地。 本地执行
git clone https://github.com/antirez/redis.git --bare
将克隆下来的仓库推送到开发者平台
克隆完成后,将仓库推送到 开发者平台上。
使用仓库页面提供的 URL。推送所有的分支和对象
cd redis.git
git push https://git.dev.tencent.com/jiong/redis.git --all
完成后,再执行推送所有的标签。
git push https://git.dev.tencent.com/jiong/redis.git --tags
一个本地仓库同时push到多个远程仓库
参考 一个项目push到多个远程Git仓库 https://segmentfault.com/a/1190000011294144
方法一:直接修改[remote “origin”] 新增url 终端命令git push 手动输入每个git仓库账号密码
Github操作,不同仓库账号密码保持一致,因为只提示一次账号密码输入,如果几个git仓库账号密码不同就会无限提示输入账号密码
参考资料
重命名本地分支 master
本地给分支重命名 The default branch has been renamed!
比如将 main 重命名为 master main
is now named master
在本地运行一下命令,若你的原分支名不是 main 请手动替换对应的 If you have a local clone, you can update it by running:
git branch -m main master
git fetch origin
git branch -u origin/master master
git remote set-head origin -a
方法二:重命名本地分支名称和远程分支名称
git branch -m oldBranch newBranch
git push --delete origin oldBranch
git push origin newBranch
git branch --set-upstream-to origin/newBranch