返回介绍

2 安装配置篇

发布于 2024-09-08 19:20:07 字数 5694 浏览 0 评论 0 收藏 0

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 中文环境配置

  1. Git Bash 窗口 ls 正常显示中文

$GitHome\etc\git-completion.bash 文件中添加:
alias ls='ls --show-control-chars --color=auto'

  1. Git Bash 窗口正常输入中文

修改在 $GitHome\etc\inputrc 文件中的两项配置:

set output-meta on
set convert-meta off
  1. Git-log 正常显示中文

$GitHome\etc\profile 文件中添加:

export LESSCHARSET=utf-8
  1. 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 的标签信息。

说明:

  1. 标签是 40 位长度的 SHA-1 值。用来唯一定位 commit(提交)的序列,也可称为 commit 对象的 KEY 值。
  2. 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文