一、起步之Git的设置与配置
Git的配置分为系统级别—system
、用户级别—global
和仓库级别—local
,他们对应的配置文件分别放在/etc/gitconfig
、~/.gitconfig
或 ~/.config/git/config
和 .git/config
里。
$ git config --local #只对某个仓库有效;优先级最高
$ git config --global #对当前用户下的所有git仓库有效;优先级中
$ git config --system #对系统所有登录用户有效;优先级最低
每一级别会覆盖上一级别的配置,所以 .git/config
的配置变量会覆盖 /etc/gitconfig
中的配置变量。也就是说,仓库级别的优先级最高。(一般我们都是使用用户级别的配置)
1、用户信息
a. 命令设置用户名和邮件地址(使用了 --global
选项,那么该命令只需要运行一次):
$ git config --global user.name 'Lynn Zhang'
$ git config --global user.email 'lynn@qq.com'
b. 检查配置信息
可以通过以下命令查看所有的配置及他们所在的文件:
$ git config --global -l
有时候可能会看到重复的变量名,因为 Git 会从不同的文件中读取同一个配置(例如:/etc/gitconfig
与 ~/.gitconfig
)。 这种情况下,Git 会使用它找到的每一个变量的最后一个配置。
可以通过输入 git config <key>
: 来检查 Git 的某一项配置,如:
$ git config --global user.name
Lynn Zhang
2、Git别名
通过 git config -l
查看系统为我们预设的别名:
$ alias.s=status
$ alias.a=!git add . && git status
$ alias.au=!git add -u . && git status
$ alias.aa=!git add . && git add -u . && git status
$ alias.c=commit
$ alias.cm=commit -m
$ alias.ca=commit --amend
$ alias.ac=!git add . && git commit
$ alias.acm=!git add . && git commit -m
$ alias.l=log --graph --all --pretty=format:'%C(yellow)%h%C(cyan)%d%Creset %s %C(white)- %an, %ar%Creset'
$ alias.ll=log --stat --abbrev-commit
$ alias.lg=log --color --graph --pretty=format:'%C(bold white)%h%Creset -%C(bold green)%d%Creset %s %C(bold green)(%cr)%Creset %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative
$ alias.llg=log --color --graph --pretty=format:'%C(bold white)%H %d%Creset%n%s%n%
那么,当需要输入 git status
的时候,只需要输入 git s
。往往,系统给预设的这些命令是不够的,就需要创建自己的别名了。
以下是举例设置自定义别名的示例:
a. 取消暂存
$ git config --global alias.unstage 'reset HEAD --'
这会使下面的两个命令等价:
$ git unstage fileA
$ git reset HEAD -- fileA
b. 查看最后一次的提交
$ git config --global alias.last 'log -1 HEAD'
c. 要执行外部命令,而不是一个 Git 子命令。 如果是那样的话,可以在命令前面加入 !
符号。
$ git config --global alias.visual '!gitk'
3、凭证存储
使用的是 SSH 方式连接远端,并且设置了一个没有口令的密钥,这样就可以在不输入用户名和密码的情况下安全地传输数据。然而,这对 HTTP 协议来说是不可能的。
但Git 拥有一个凭证系统来处理这个事情。 下面有一些 Git 的选项:
- 默认所有都不缓存。 每一次连接都会询问你的用户名和密码。
- “cache” 模式会将凭证存放在内存中一段时间。 密码永远不会被存储在磁盘中,并且在15分钟后从内存中清除。
- “store” 模式会将凭证用明文的形式存放在磁盘中,并且永不过期。 这意味着除非你修改了你在 Git 服务器上的密码,否则你永远不需要再次输入你的凭证信息。 这种方式的缺点是你的密码是用明文的方式存放在你的 home 目录下。
- 如果你使用的是 Mac,Git 还有一种 “osxkeychain” 模式,它会将凭证缓存到你系统用户的钥匙串中。 这种方式将凭证存放在磁盘中,并且永不过期,但是是被加密的,这种加密方式与存放 HTTPS 凭证以及 Safari 的自动填写是相同的。
设置 Git 的配置来选择上述的一种方式
$ git config --global credential.helper cache
“store” 模式可以接受一个 --file <path>
参数,可以自定义存放密码的文件路径(默认是 ~/.git-credentials
)。 “cache” 模式有 --timeout <seconds>
参数,可以设置后台进程的存活时间(默认是 “900”,也就是 15 分钟)。 下面是一个配置 “store” 模式自定义路径的例子:
$ git config --global credential.helper 'store --file ~/.my-credentials'
Git 甚至允许你配置多个辅助工具。 当查找特定服务器的凭证时,Git 会按顺序查询,并且在找到第一个回答时停止查询。 当保存凭证时,Git 会将用户名和密码发送给 所有 配置列表中的辅助工具,它们会按自己的方式处理用户名和密码。 如果你在闪存上有一个凭证文件,但又希望在该闪存被拔出的情况下使用内存缓存来保存用户名密码,.gitconfig
配置文件如下:
[credential]
helper = store --file /mnt/thumbdrive/.git-credentials
helper = cache --timeout 30000
4、获取帮助
$ git help <verb>
$ git <verb> --help
$ man git-<verb>
如,要想获得 git config
命令的手册,执行
$ git help config
$ git config --help
$ man git-config
二、基础
1、获取Git仓库
- a. 把已有项目纳入到git管理:
$ cd 项目代码所在的文件夹
$ git init
- b. 新建的项目直接用git管理:
$ cd 某个文件夹
$ git init your_project #在当前目录下创建一个和项目名称同名的文件夹
$ cd your_project
- c. 克隆现有仓库:执行
git clone
命令的时候,默认配置下远程 Git 仓库中的每一个文件的每一个版本都将被拉取下来。
$ git clone https://github.com/lynn/AvoidCrashKit
这会在当前目录下创建一个名为 “AvoidCrashKit” 的目录,并在这个目录下初始化一个 .git
文件夹, 从远程仓库拉取下所有数据放入 .git
文件夹,然后从中读取最新版本的文件的拷贝。 如果你进入到这个新建的 AvoidCrashKit
文件夹,你会发现所有的项目文件已经在里面了。
$ git clone https://github.com/lynn/AvoidCrash ProtectKit
会执行与上一条命令相同的操作,但目标目录名变为了 ProtectKit
。
2、常用命令
-
a. 检查当前文件状态
$ git status On branch master Your branch is up-to-date with 'origin/master'. nothing to commit, working directory clean
说明现在的工作目录相当干净。换句话说,所有已跟踪文件在上次提交后都未被更改过。还显示了当前所在分支,并告诉你这个分支同远程服务器上对应的分支没有偏离。
网友评论