安装git

1
2
brew install git

配置git

在用户目录下,找~/.gitconfig文件,如果不存在则创建。

1
2
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
[core]
excludesfile = /Users/zhoujunwen/.gitignore_global
[diff]
tool=sourcetree
prompt=false
[difftool "sourcetree"]
cmd = /usr/local/bin/bcomp \"$LOCAL\" \"$REMOTE\"
path = -ro
[merge]
tool=sourcetree
prompt=false
[mergetool "sourcetree"]
cmd = /usr/local/bin/bcomp \"$LOCAL\" \"$REMOTE\" \"$BASE\" \"$MERGED\"
trustExitCode = true
[user]
name = Joyven
email = zhoujunwen@idongjia.cn
[commit]
template = /Users/zhoujunwen/.stCommitMsg
[alias]
co = checkout
ci = commit
cp = cherry-pick
br = branch
st = status
unstage = reset HEAD
last = log -1
lg = "log --graph"
df = diff
lga = "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%Creset' --abbrev-commit --date=relative"
lgb = shortlog --format='%h|%cn|%cr|%s%d'
lgc = log --pretty=format:'%h (%ad) | %s%d [%an]' --graph --date=short
lgd = log --graph --pretty=format:'%Cred%h%Creset %C(cyan)[%ad]%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=short
review = !sh -c 'git push origin HEAD:refs/for/$1' -
gerrit = !sh -c 'git push gerrit HEAD:refs/for/$1' -
[filter "lfs"]
required = true
clean = git-lfs clean -- %f
smudge = git-lfs smudge -- %f
process = git-lfs filter-process

安装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
2
3
4
$ git init .
$ echo Hello World > README.md
$ git add README.md
$ git commit -m "Initial commit"

现在我们创建一些非空文件。

1
2
3
4
$ ls > foo.txt
$ ls > bar.txt
$ ls > cat.bin
$ ls > dog.bin
  • 追踪文件

没有特别说明的情况下,Git LFS 不会处理大文件问题,我们可以使用 lfs track 命令告诉 Git LFS 处理哪些文件。

1
$ git lfs track '*.bin'

以上命令告诉 Git LFS 跟踪所有 bin 后缀的文件,包括将来创建的 bin 后缀的文件。
查看 git-lfs 正在跟踪的模式列表(patterns),可执行 git lfs track。

1
2
Listing tracked patterns
*.bin (.gitattributes)

提交代码 接下来只要将文件提交到仓库即可。值得注意的是,.gitattributes 文件也需要提交到仓库。 $ git add . $ git commit -m "Added files" 此时,可执行 git lfs ls-files 查看 LFS 跟踪的文件列表。

1
2
f05131d24d * cat.bin
7db207c488 * dog.bin

提交后,可将代码 push 到远程仓库。

1
2
3
4
5
6
7
8
9
$ git push origin master
Git LFS: (1 of 1 files)12.58 MB / 12.58 MB
Counting objects: 2, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (5/5), 548 bytes | 0 bytes/s, done.
Total 5 (delta 1), reused 0 (delta 0)
To https://git.coding.net/coding/coding-manual.git
67fcf6a..47b2002 master -> master
  • git lfs clone

可使用 git lfs clone 命令 clone 包含 GIT LFS 文件的远程仓库到本地

1
2
3
4
5
6
7
8
9
$ git lfs clone https://git.coding.net/coding/coding-manual.git
Cloning into 'coding-manual'
remote: Counting objects: 16,done.
remote: Compressing objects: 100% (12/12),done.
remote: Total 16 (delta 3), reused 9 (delta 1)
Receiving objects: 100% (16/16),done.
Resolving deltas: 100% (3/3),done.
Checking connectively...done.
Git LFS: (4 of 4 files) 0 B / 100 B

注:了解更多 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
2
3
4
[remote "all"]
url = git@github.com:licess/licess.git
url = git@gitcafe.com:licess/licess.git

再push时,运行:

1
git push all master