mac中git的配置
安装git
1 | brew install git |
配置git
在用户目录下,找~/.gitconfig
文件,如果不存在则创建。
1 | vim ~/.gitconfig |
打开git配置文件,增加如下内容:
- diff: 差异对比,这里配置的是Compare Beyond。
- merge:差异对比时,选择合并的工具,也是Compare Beyond。
- user:用户信息配置。
- commit:提交信息消息模板。
- alias:别名配置。如果在~/.bash_profile中把
git
的别名配置成g
,而git的命令配置成如下,则可以使用g ci -m '测试提交'
简化git commit -m '测试提交'
等。 - lga、lgb、lgc、lgd:这些事日志格式的配置。
- review、gerrit:这是gerrit review命令的简化,使用:
git review dev
,dev是分支名。 - filter:git的过滤工具,比如大文件的管理。
1 | [core] |
安装git-lfs
Git LFS (Large File Storage, 大文件存储) 是把音乐、图片、视频等指定的任意文件存在 Git 仓库之外,而在 Git 仓库中用一个占用空间 1KB 不到的文本指针来代替的插件。从而减小 Git 仓库本身的体积,使克隆 Git 仓库的速度加快,也使得 Git 不会因为仓库中充满大文件而损失性能。其优点有:
- 大文件版本化 使用 Git 版本化大文件 —— 大小超过 GB 的文件也不在话下。
- 更多的仓库空间 意味着你可以在 Git 仓库中托管更多文件。额外的文件存储空间也使得你的仓库大小变得可控。
- 更快的克隆与拉取 下载更少的数据,这意味着在包含大文件的仓库中更快的完成克隆和拉取。
- 一致的 Git 工作流 和往常一样使用 Git —— 不需要额外的操作指令、存储系统和工具套件。
先使用brew安装git-lfs:
1 | brew install git-lfs |
然后执行:
1 | git lfs install |
git-lsf的使用
- 创建仓库
1 | $ git init . |
现在我们创建一些非空文件。
1 | $ ls > foo.txt |
- 追踪文件
没有特别说明的情况下,Git LFS 不会处理大文件问题,我们可以使用 lfs track 命令告诉 Git LFS 处理哪些文件。
1 | $ git lfs track '*.bin' |
以上命令告诉 Git LFS 跟踪所有 bin 后缀的文件,包括将来创建的 bin 后缀的文件。
查看 git-lfs 正在跟踪的模式列表(patterns),可执行 git lfs track。
1 | Listing tracked patterns |
提交代码 接下来只要将文件提交到仓库即可。值得注意的是,.gitattributes 文件也需要提交到仓库。 $ git add . $ git commit -m "Added files"
此时,可执行 git lfs ls-files
查看 LFS 跟踪的文件列表。
1 | f05131d24d * cat.bin |
提交后,可将代码 push 到远程仓库。
1 | $ git push origin master |
- git lfs clone
可使用 git lfs clone 命令 clone 包含 GIT LFS 文件的远程仓库到本地
1 | $ git lfs clone https://git.coding.net/coding/coding-manual.git |
注:了解更多 GIT LFS 的使用,可执行以下语句查看帮助
1 | $ git lfs help |
git部署SSH公钥
- 生成公钥
Mac/Linux 打开命令行终端, Windows 打开 Git Bash 。 输入ssh-keygen -t rsa -C “username@example.com”,( 注册的邮箱),接下来点击enter键即可(也可以输入密码)。
1 | ssh-keygen -t rsa -b 4096 -C "your_email@example.com" |
- 在对应站点配置公钥
大部分代码托管服务器,都支持ssh协议。所以,在网站中可以配置自己的公钥,通过git@托管服务网商域名:yourName/项目.git
的形式访问。
复制~/.ssh/id_rsa.pub
的内容,可用cat ~/.ssh/id_rsa.pub
输入到终端, 复制粘贴到对应的网站即可。
push到多个仓库
出于安全考虑,有时候需要把一份代码push到多个服务器。
编辑本地仓库目录下面的.gitconfig文件,添加:
1 | [remote "all"] |
再push时,运行:
1 | git push all master |