1 前言

git 基础知识,掌握这些之后能够使用 git 管理自己的文件

2 安装

官网安装

3 配置

git config

  • –system 计算机上所有用户 /etc/gitconfig
  • –global 当前用户 ~/.gitconfig
  • 当前仓库 .git/config

3.1 用户配置

git config --global user.name
git config --global user.email
# 修改 git 默认使用的编辑器
git config --global core.editor emacs

3.2 检查配置

git config --list
git config user.name

4 获取帮助

git help <verb>
git <verb> help
man git-<verb>
git config help

5 获取 git 仓库

# 初始化一个本地库
git init
# 从远程仓库克隆一份
git clone [url]

6 管理仓库

6.1 文件状态

检查文件状态 ~~ git status

  1. 已跟踪
    1. 未修改
    2. 已修改
    3. 已暂存
  2. 未跟踪 Untracked file

6.2 跟踪新文件

git add

6.3 暂存已修改的文件

git add

# --short or -s 查看简短信息 左边的代表在暂存区的操作
$ git status -s
 M README
MM Rakefile
A lib/git.rb
M lib/simplegit.rb
?? LICENSE.txt

6.4 忽略文件

# 忽略以 .o 或者 .a 结尾的文件
*.[oa]
# 忽略以~结尾的文件
*~
# 即使上面已经指定了 .a 被忽略,这里仍然将跟踪 lib.a
!lib.a
# 忽略本目录的 TODO 文件夹
/TODO
# 忽略 build 文件夹
build/
  • 不想让 git 管理的文件名称都放在 .gitignore 中
  • # 为注释
  • 使用 glob 模式匹配 (shell 使用的简化版的正则表达式)
  • / 开头防止递归
  • / 结尾指定目录
  • 忽略指定模式以外的文件或者目录,可以在模式之前加上 !
  • github 提供了 https://github.com/github/gitignore

6.5 查看更改

git diff

  • 无参数 工作目录与暂存区
  • –cached 已暂存的变化 or (–stated)
  • git diff –tool vimdiff 使用diff工具

6.6 提交更新

git commit

  • -m 提供 message
  • -a 自动暂存已跟踪的文件并提交

6.7 移除文件

git rm

6.8 重命名

git mv

6.9 查看提交日志、历史

git log
git log -p -2
# 显示简略信息
git log --stat
# 指定格式
git log --pretty=oneline
git log --pretty=format:"%h - %an, %ar : %s"
git log --pretty=format:"%h %s" --graph
# 列出最近两周的历史
git log --since=2.weeks
  1. –author
  2. -p 显示内容
  3. -number 显示几条
  4. –since,–after
  5. –until,–before
  6. –grep 搜索提交说明的关键字
  7. –all-match and 条件,默认是 or
  8. -S string 搜索提交内容中含有string的历史
  9. git log [args] – [file/dir path]

6.10 撤销操作

  1. git commit –amend (改过自新) 会将 暂存区 的文件提价,并且会和上条提交变成一个提交
  2. git reset HEAD <filename> 取消暂存的文件
  3. git checkout – <filename> 危险命令,会将本地的修改完全覆盖

6.11 管理远程仓库

# 查看远程仓库
git remote [-v]
git remote show [remote-name]
# 克隆远程仓库
git clone
# 添加一个远程分支
git remote add <shortname> <url>
# 从远程仓库抓取或拉取,不会自动合并
git fetch [remote-name]
# 从远程仓库抓取并自动合并
git pull
# 必须先将他们的工作拉取下来,并将其合并到本地,才能推送
git push origin master
# 删除或者重命名
git remote rename (会修改远程分支的名称)
git remote rm

6.12 打标签

  1. 列出标签 git tag git tag -l 'v1.8.5*'
  2. 创建标签
    1. 轻量标签 :: (特定提交的引用)
    2. 附注标签 :: (完整对象)

      # 给当前提交打标签
      git tag -a v1.4 -m 'my version 1.4'
      # 给历史提交打标签
      git tag -a v1.4 9fceb02
      
  3. 查看标签信息 git show v1.4
  4. 共享标签 git push origin v1.4 git push origin –tags // 传送所有不在仓库中的标签
  5. 检出标签 git checkout -b version2 v2.0.0

7 常用 git 别名

git config --global alias.co checkout 
git config --global alias.br branch 
git config --global alias.ci commit 
git config --global alias.st status
git config --global alias.unstage 'reset HEAD --'
git config --global alias.last 'log -1 HEAD'
git config --global alias.visual '!gitk'

8 参考文献

[1]git 官方中文文档 https://git-scm.com/book/zh/v2

Last Updated 2017-04-07 五 10:52.
Render by hexo-renderer-org with Emacs 25.3.1 (Org mode 9.1.1)