心辰·Dev

Git 常用命令备忘

Git简介

版本控制的发展

多年来版本控制系统的标准做法是集中化的版本控制系统(诸如 CVS),有一个单一的集中管理的服务器,保存所有文件的修订版本,协同工作的人们通过客户端连接到服务器进行文件的更新操作。这样做的缺点是如果中央服务器出现单点故障,那么就会出现数据丢失的风险。
于是分布式的版本控制系统面世了。在这类系统中,客户端并不只是提取最新版本的文件快照,而是把代码仓库完整镜像下来。每一次的提取操作,实际上都是一次对代码仓库的完整备份。 Git 就是典型的分布式版本控制系统。

和其他版本控制系统的比较

  1. 直接记录快照,而非差异比较
  2. 近乎所有操作都是本地执行,绝大多数操作只需要访问本地文件和资源
  3. 时刻保持数据完整性, Git 使用 SHA-1 算法计算数据的校验和
  4. 多数操作仅添加数据,提交快照后不用担心丢失数据
  5. 文件有三种状态,已提交(committed),已修改(modified)和已暂存(staged)

基本工作流程

  1. 在工作目录中修改某些文件。
  2. 对修改后的文件进行快照,然后保存到暂存区域。
  3. 提交更新,将保存在暂存区域的文件快照永久转储到 Git 目录中。

Git安装

MacOS X 10.10 安装的 Git 版本为 1.9.3.

1
2
$ git --version
git version 1.9.3 (Apple Git-50)

Git简单命令

使用前的配置

1
2
3
$ git config --global user.name "bx awesome"
$ git config --global user.email bx@example.com
$ git config --global merge.tool vimdiff

查看配置信息

1
$ git config --list

从现有仓库克隆

1
$ git clone [url]

查看当前文件状态

1
$ git status

跟踪新文件

1
2
$ git add README
$ git add .

已缓存状态的文件显示在Changes to be committed这行下面

查看忽略文件

1
2
3
$ cat .gitignore
*.[oa]
*~

查看已暂存和未暂存的更新

1
2
$ git diff 
$ git diff --cached

提交更新

1
2
$ git commit
$ git commit -m "version1.0"

-m 参数后跟提交说明

跳过使用暂存区域

1
$ git commit -a

移除文件

1
$ git rm

查看日志

1
$ git log

-p 按补丁格式显示每个更新之间的差异
--stat 显示每次更新的文件修改统计信息
--shortstat 只显示—stat中最后的行数修改添加移除统计
--name-only 仅在提交信息后显示已修改的文件清单
--name-status 显示新增、修改、删除的文件清单
--abbrev-commit 仅显示 SHA-1 的前几个字符,而非所有的 40 个字符
--relative-date 使用较短的相对时间显示(比如,“2 weeks ago”)
--graph 显示 ASCII 图形表示的分支合并历史
--pretty 使用其他格式显示历史提交信息,可用的选项包括 oneline , short , full , fuller 和 format (后跟指定格式)

从远程仓库抓取数据

1
$ git fetch [remote-name]

该命令只抓取数据而不合并本地分支

推送数据到远程仓库

1
$ git push origin master

查看远程仓库信息

1
$ git remote show origin

Github 博客更新

  1. 查看当前状态

    1
    $ git status
  2. 跟踪更新的内容

    1
    $ git add .
  3. 提交更新

    1
    $ git commit -m"xxx"
  4. 推送更新到 Github

    1
    $ git push origin master