Fork me on GitHub

Git基础

Git的三种状态

  • 已提交:数据已安全的保存在数据库中
  • 已修改:修改了文件还没保存到数据库中
  • 已暂存:对一个已修改的文件做了标记,使之包含在下次提交的快照中

Git的三种工作区

  • Git仓库:Git用来保存项目的元数据和对象数据库的地方
  • 工作目录:供修改的文件
  • 暂存区域:它是一个文件,保存了下次将提交的文件列表信息

Git工作区

Git配置

  1. /etc/gitconfig文件:包含系统上每个用户的仓库的通用配置;查看系统配置的命令git config --system --list
  2. ~/.gitconfig或者~/.config/git/config文件:只针对当前用户;查看当前用户配置的命令git config --global --list
  3. 当前仓库Git目录的config文件,.git/config:针对该仓库;查看当前仓库配置的命令git config --local --list

每一个级别覆盖上一级别的配置.可以通过输入git config <key>来检查Git的某一项配置,比如

1
2
$ git config user.name
tfei ma

获取帮助

  1. git help <verb>
  2. git <verb> --help
  3. man git-<verb>

获取Git仓库

在现有项目中初始化仓库

在该项目目录输入

git init

该命令创建一个.git子目录,这个子目录包含初始化的Git仓库中所有的必须文件。

克隆现有的仓库

git clone [url]

如果克隆仓库的时候想自定义本地仓库的名字,可以使用如下命令:

git clone [url] newName

记录每次更新到仓库

如下为使用Git时文件的生命周期:

Git文件生命周期

检查文件状态

git status

  • 在untracked files 下面的就是未被跟踪状态的文件
  • 在Changes to be comitted下面的是已暂存状态的文件

运行git status -s会得到更为紧凑的输出格式。

跟踪新文件

Git add filename

git add命令将文件放到暂存区

忽略文件

我们可以创建一个.gitignore文件,列出要忽略的文件模式,列出的文件将不会别Git跟踪管理。

.gitignore文件的格式规范:

  • 所有空行或者以 开头的行都会被 Git 忽略。
  • 可以使用标准的 glob 模式匹配,即shell使用的正则表达式。
  • 匹配模式可以以(/)开头防止递归。
  • 匹配模式可以以(/)结尾指定目录。
  • 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。

查看已暂存和未暂存的修改

git diff

此命令比较的是工作目录中当前文件和暂存区域快照之间的差异,也就是修改之后还没有暂存起来的变化内容。

提交更新

git commit -m “information”

移除文件

git rm

这个命令会从工作目录中删除指定的文件,并且从已跟踪的文件清单中移除。

查看提交历史

git log

一些选项:

  • -p:用来显示每次提交内容的差异
  • -number:显示最近number此提交

撤销操作

取消暂存的文件

git reset HEAD filename

撤销对文件的修改

git checkout –filename

这是一个很危险的命令,因为对那个文件的任何修改都会消失。

远程仓库的使用

查看远程仓库

git remote

使用-v参数会显示远程仓库的简写及对应的URL

git remote -v

添加远程仓库

git remote add

是指定一个可以轻松引用的简写。

从远程仓库中拉取和抓取

git fetch [remote-name]

这个命令会访问远程仓库,并从中拉取所有还没有的数据,执行完成后将会拥有那个远程仓库中所有的分支的引用,可以随时查看或者合并。

推送到远程仓库

git push [remote-name]

远程仓库的移除与重命名

git remote rename oldname newname