git

版本控制

分布式版本控制系统

Git

本地操作

存储前校验

git的三种状态

  • 已提交(committed)
  • 已修改(modified)
  • 已暂存(staged)


    工作目录、暂存区域以及 Git 仓库.



基本的 Git 工作流程如下:

  1. 在工作目录中修改文件。
  2. 暂存文件,将文件的快照放入暂存区域。
  3. 提交更新,找到暂存区域的文件,将快照永久性存储到 Git 仓库目录。

命令行操作

配置git环境

  • git config
    检查配置信息
    1
    git config --list


  • 用户信息配置

    1
    2
    $ git config --global user.name "John Doe"
    $ git config --global user.email johndoe@example.com
  • help

    1
    git help -a

git基础学习

获取git仓库

  • 新建

    1
    2
    3
    git init
    git add *
    git commit -m 'xxx'
  • 克隆

    1
    git clone [url]

更新

查看当前文件状态

1
git status

跟踪新文件

添加内容到下一次提交中

1
git add

暂存已修改文件

修改已被跟踪未提交的文件
如果提交,提交版本为最后一次add的版本

状态简览

  • 新添加的未跟踪文件前面有 ?? 标记
  • 新添加到暂存区中的文件前面有 A 标记
  • 修改过的文件前面有 M 标记

忽略文件

创建一个名为 .gitignore 的文件,列出要忽略的文件模式。

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

要查看尚未暂存的文件更新了哪些部分

1
git diff

查看已暂存的将要添加到下次提交里的内容更新了哪些部分

1
git diff --staged

提交更新

每次准备提交前,先用 git status 看下,是不是都已暂存起来了, 然后再运行提交命令 git commit

1
git commit -m "XXX"

跳过使用暂存区域

git commit -a

移除文件

  • 从已跟踪文件清单中移除(确切地说,是从暂存区域移除),然后提交
    git rm

  • 删除之前修改过并且已经放到暂存区域的文件
    git rm -f

  • 把文件从 Git 仓库中删除(亦即从暂存区域移除),但仍然希望保留在当前工作目录中
    console git rm --cached

移动文件

重命名
git mv (filename1) (filename2)

查看提交历史

git log
参数:

  • -2 仅显示最近两次提交
  • -p 用来显示每次提交的内容差异
  • -stat 在每次提交的下面列出所有被修改过的文件、有多少文件被修改了以及被修改过的文件的哪些行被移除或是添加
  • -pretty 指定使用不同于默认格式的方式展示提交历史
  • -format 定制要显示的记录格式
1
2
3
git log --pretty=format:"%h - %an, %ar : %s"
console
git log --pretty=oneline

更多参数请查看git文档

撤销操作

重新提交
git commit -amend

取消暂存的文件
git reset HEAD <file>...

撤销对文件的修改
git checkout -- <file>

远程仓库的使用

  • 查看
    git remote

  • 添加
    git remote add <shortname> <url>

  • 从远程仓库中抓取与拉取
    git fetch [remote-name]

  • 推送到远程仓库
    git push [remote-name] [branch-name]

  • 查看远程仓库
    git remote show [remote-name]

  • 远程仓库的移除与重命名
    移除
    git remote rm

重命名
git remote rename

打标签

  • 列出标签
    git tag

    • 创建标签
      附注标签
      git tag -a v1.4 -m 'my version 1.4'

轻量标签
git tag v1.4-lw

git别名

参考

1
2
3
4
$ git config --global alias.co checkout
$ git config --global alias.br branch
$ git config --global alias.ci commit
$ git config --global alias.st status