2 安装配置篇
2.1 安装
Linux:只要用 yum,apt-get 等安装即可,或是下载之后编译安装。
Mac OS X:从 这里 下载并安装。
Windows:先安装 putty,然后从 这里 下载并安装。
2.2 开发者配置
2.2.1 SSHKEY 验证
git 支持使用 ssh 路径。
git 使用 ssh tunnel 来提交源码,这个加密通道可以避免源码的封包被拦截而截取。因此要先产生并上传 ssh key 到 github,方便之後与服务器之间的通迅。
Mac OS X 与 Linux,只要输入 ssh-keygen -t rsa 并根据指示操作即可:
[~/.ssh]$ ssh-keygen -t rsa
一路按缺省键盘,即可得到以下文件。其中 id_rsa.pub 是公钥,而 id_rsa 则是私钥,请妥善保存以免遺失,它们都存放于~/.ssh 目录中。将公钥粘贴到你 github 帐号中的 SSH Public Keys 的位置。注意小心不要复制到空格。
Windows,执行 git-bash 并输入:
ssh-keygen -C “username@email.com” -t rsa
参考脚本
$ ssh-keygen -t rsa
$ cat .ssh/id_rsa.pub | ssh $user@$host -p [port] "cat - >>.ssh/authorized_keys"
特别说明 :Windows 环境使用 git bash
需要 .ssh
目录权限 755
。
2.2.2 开发用户签名
$ git config –-list
denny.wuqifu@3g.net.cn=qfwu
user.email=wuqifu@3g.net.cn
user.name=denny
# 设置用户名与邮箱
$ git config --global user.name "Scott Chacon"
$ git config --global user.email "schacon@gmail.com"
执行了上面的命令后,会在你的主目录 (home directory) 建立一个叫 ~/.gitconfig
的文件。内容一般像下面这样:
[user]
name = Scott Chacon
email = schacon@gmail.com
2.3 中文环境配置
- Git Bash 窗口 ls 正常显示中文
在 $GitHome\etc\git-completion.bash
文件中添加:alias ls='ls --show-control-chars --color=auto'
- Git Bash 窗口正常输入中文
修改在 $GitHome\etc\inputrc
文件中的两项配置:
set output-meta on
set convert-meta off
- Git-log 正常显示中文
在 $GitHome\etc\profile
文件中添加:
export LESSCHARSET=utf-8
- Git-gui 正常显示中文
在 $GitHome\etc\gitconfig
文件中修改或添加如下配置:
[gui]
encoding = utf-8
[i18n]
commitencoding = GB2312
;如果没有这一条,虽然我们在本地用$ git log 看自己的中文修订没问题,但 a) 我们的 log 推到服务器后会变成乱码;b) 别人在 Linux 下推的中文 log 我们 pull 过来之后看起来也是乱 码。这是因为,我们的 commit log 会被先存放在项目的.git/COMMIT_EDITMSG 文件中;在中文 Windows 里,新建文件用的是 GB2312 的编码;但是 Git 不知 道,当成默认的 utf-8 的送出去了,所以就乱码了。有了这条之后,Git 会先将其转换成 utf-8,再发出去,于是就没问题了。
[core]
quotepath = false
作用:没有这一条,$git status 输出中文会显示为 UNICODE 编码。
特别说明 :如果要上传文件名为中文的文件,最好下载 git 2.0 以上的版本,采用 utf-8 编码路径,传输到远程也不会乱码,也不用设置 .gitconfig
文件里的 gui/pathnameencoding/commit
的编码。
2.4 参数配置.git
配置文件优先级 : .git/config > .gitconfig > /etc/gitconfig
忽略文件的优先级 : .git/info/exclude > .git/.gitignore > 全局 ~/.gitignore
E:\SOURCE\GIT\165\YYUSMODEL\.GIT
│ COMMIT_EDITMSG
│ config //全局配置文件
│ description
│ HEAD //当前仓库的分支路径
│ index
│ packed-refs
├─hooks
│ applypatch-msg.sample
│ commit-msg.sample
│ post-commit.sample
│ post-receive.sample
│ post-update.sample
│ pre-applypatch.sample
│ pre-commit.sample
│ pre-rebase.sample
│ prepare-commit-msg.sample
│ update.sample
├─info
│ exclude
│
├─logs
│ │ HEAD
│ └─refs
│ └─heads
│ master
├─objects
│ ├─0e
│ │ 7ae0a10b0c2be6a664b20e38ec0a332e3e7ae7
│ ├─info
│ └─pack
│ pack-31c5c96a4af178beb7b50c1b3fc99677f3d76840.idx
│ pack-31c5c96a4af178beb7b50c1b3fc99677f3d76840.pack
└─refs
├─heads
│ master
├─remotes
│ └─origin
│ HEAD
└─tags
说明:上图为 .git
的目录结构。HEAD 文件为当前目录树的分支路径,如果删除 HEAD 所指向的链接(一般缺省为: refs/heads/master
),那么会放弃本次编辑, git pull
不会导致合并,会全部更新远程服务器的版本。
文件目录名 | 用途 |
---|---|
branches/ | 不同平台不一定存在。功能类似 objects。 |
hooks/ | 自定义的 git 命令触发的勾子函数 |
info/ | 包含文件 info/exclude~本仓库需要忽略的文件,优先级最高。 |
logs/ | 文件 refs/HEAD,存储本地 git 操作日志 |
objects/ | 按标签名的二级地址存放本次标签更改过的数据。 |
refs/ | 包括三个子目录 heads、remotes 和 tags。heads 路径下存储 branch 文件。一个 branch 一个文件,文件内容存储标签数据。 |
config | 配置信息,如远程仓库地址、分支信息。git clone 时会自动配置,也可手动修改。 |
description | 描述信息,暂没用。 |
FETCH_HEAD | 当前获取到的远程仓库标签 |
ORIG_HEAD | 本地仓库标签。 |
index | 二进制索引数据。 |
HEAD | 当前的标签路径 |
packed-refs | 所有 tags/branch 的标签信息。 |
说明:
- 标签是 40 位长度的 SHA-1 值。用来唯一定位 commit(提交)的序列,也可称为 commit 对象的 KEY 值。
- FETCH_HEAD 与 ORIG_HEAD 的标签数据不一致,即可说明有修改。
远程端 remote 名称缺省为 origin,即本地 clone 的源端。本地分支的名字缺省为 master。
所以从本地更新到远程使用: $ git pull origin master
使用 git remote add 添加远程服务器端。
usage: `git remote add [<options>] <name> <url>`
git 配置文件示例 ~/.gitconfig
[user]
name = Keefe Wu
email = keefe@gmail.com
[core]
autocrlf = false
excludesfile = ~/.gitignore_global
filemode = false
quotepath = false
longpaths = true
[gui]
encoding = utf-8
[i18n]
commitEncoding = utf-8
[svn]
pathnameencoding = utf-8
[credential]
#helper = cache --timeout 3600
#helper = store
[push]
default = simple
备注: 可用命令添加如
git config --add core.filemode false
autocrlf 换行符处理,excludesfile 忽略文件,filemode 是否检测 filemode,quotepath 路径是否转义,longpaths 是否支持长路径,
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论