前言
- 版本控制:通过文档控制,能记录任何工程项目内各个模块的改动历程,并为每次改动编上序号,以便将来查阅特定版本修订情况的系统。
Git
:一个分布式版本控制软件,最初由林纳斯·托瓦兹Linus Torvalds
创作,基于GPL
协议发布。GitHub
:一个通过Git
进行版本控制的软件源代码托管服务,使用Ruby on Rails
编写而成。GitLab
:一个基于Git
的项目管理软件,允许搭建内部的软件源代码托管服务。
安装Git
Ubuntu
系统:
1 | apt-get install -y git-core |
CentOS
系统:
1 | yum install -y git-core |
文件状态
untracked
:未被跟踪的文件。unmodified
:已被跟踪,未经过修改。modified
:已被修改的文件,但还没有提交保存。staged
:已被暂存的文件,把已修改的文件放在下次提交时要保存的清单中。

配置Git
- 命令格式:
1 | git config [OPTION] |
配置文件
/etc/gitconfig
:系统配置,若使用git config
时用--system
选项,则配置该文件。~/.gitconfig
:个人配置,若使用git config
时用--global
选项,则配置该文件。.git/config
:当前项目的配置,若使用git config
时不使用任何选项, 则配置该文件。
设置用户名:
1 | git config --global user.name "YuXiaoCoder" |
- 设置邮箱地址:
1 | git config --global user.email "xiao.950901@gmail.com" |
- 设置默认编辑器:
1 | git config --global core.editor vim |
- 设置默认差异分析器:
1 | git config --global merge.tool vimdiff |
- 设置默认上传方式:
1 | git config --global push.default simple |
- 设置终端输出着色:
1 | git config --global color.ui true |
- 获取配置信息
1 | git config --list |
常用操作
- 获取帮助信息:
1 | git help COMMAND |
- 初始化仓库:
1 | git init |
- 克隆仓库:
1 | # 克隆本地仓库 |
- 添加到索引:
1 | # 支持bash中的通配符 |
- 提交到本地仓库:
1 | git commit -m "代码提交的描述信息" |
- 获取当前工作的状态:
1 | git status |
- 获取远程仓库信息:
1 | git remote |
- 添加远程仓库:
1 | git remote add origin SERVER |
- 推送至远程仓库:
1 | git push origin master |
分支操作
分支:用来将特性开发相互独立,在创建仓库的时候,
master
为默认的,在其他分支上进行开发,完成后再合并到主分支上。创建新分支:
1 | git branch NAME |
- 切换分支:
1 | git checkout NAME |
- 合并分支:
1 | # 先切换至主分支 |
- 删除分支:
1 | git branch -d NAME |
- 获取所有分支:
1 | # 当前分支使用*号标识 |
- 获取与当前分支已合并/未合并的分支:
1 | git branch [--merge | --no-merged] |
- 推送指定分支至远程仓库:
1 | git push origin local_branch:remote_branch |
- 删除远程仓库的分支:
1 | git push origin :remote_branch |
- 为分支重命名:
1 | git branch -m oldbranch newbranch |
- 比较分支之间的差异:
1 | git diff <source_branch> <target_branch> |
配置SSH
GitHub
:《传送门》。- 生成密钥对:
1 | ssh-keygen -t rsa |
- 将公钥信息添加到
GitHub
的个人设置Settings
中的SSH and GPG keys
。 - 测试是否通过验证:
1 | ssh -T git@github.com |
- 请将密钥对妥善保管,若需更换主机,需拷贝密钥对并修改权限:
1 | mv ~/.ssh/id_rsa ~/.ssh/github |
- 配置多用户
Git
的密钥:
1 | vim ~/.ssh/config |
1 | Host github.com |