初始化

给已存在项目添加版本管理,先进入项目目录,然后

1
git init 

若新建项目,可以:

1
git init project_name

git 配置参数

1
git config setting_name setting_value

使用参数--global给全部用到当前git二进制文件的项目设置环境变量,例如

1
git config --global email xxx@gmail.com

查看当前git环境详细配置

1
git config -l

查看不同级别的配置文件:

1
2
git config --system --list
git config --global --list

删除配置项

1
git config --unset setting_name

git设计思想

git有四个区域:

  1. 工作目录(working Directory):当前的工作环境
  2. 暂存区(Stage/Index):暂存代码改动
  3. 本地仓库(Local Repository)
  4. 远程git仓库(Remote Repository)

用一个更贴切的图片描述:

  • Directory:使用Git管理的一个目录,也就是一个仓库,包含我们的工作空间和Git的管理空间。
  • WorkSpace:需要通过Git进行版本控制的目录和文件,这些目录和文件组成了工作空间。
  • .git:存放Git管理信息的目录,初始化仓库的时候自动创建。
  • Index/Stage:暂存区,或者叫待提交更新区,在提交进入repo之前,我们可以把所有的更新放在暂存区。
  • Local Repo:本地仓库,一个存放在本地的版本库;HEAD会只是当前的开发分支(branch)。
  • Stash:隐藏,是一个工作状态保存栈,用于保存/恢复WorkSpace中的临时状态。

git管理文件的三种状态

  • modified
  • staged
  • committed

注意下面这个图:

  • 从上图可以看出fetch和pull的区别
  • checkout的用法

所以checkout到底怎么用

当执行 “git checkout .” 或者 “git checkout — ” 命令时,会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区的改动。

当执行 “git checkout HEAD .” 或者 “git checkout HEAD ” 命令时,会用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区和以及工作区中的文件。这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改 动。


注意,从暂存区取消文件,变为unstage,使用git checkout –

直接从暂存区删除文件,git rm –cached xxx, 但不删除物理文件

git rm xxx 从暂存区中删除,并删除物理文件

移除所有未跟踪文件

1
2
git clean
git clean -df

其中-d指的是包含目录,-f表示强制删除

查看文件修改后的差异

1
git diff <filename>

git checkout

git checkout banch

git checkout branch -- filename
维持HEAD的指向不变。用branch所指向的提交中filename替换暂存区和工作区中相 应的文件。注意会将暂存区和工作区中的filename文件直接覆盖。

git commit

提交暂存区的指定文件到仓库区
$ git commit [file1] [file2] ... -m [message]

提交工作区自上次commit之后的变化,直接到仓库区,跳过了add,对新文件无效
$ git commit -a

提交时显示所有diff信息
$ git commit -v

使用一次新的commit,替代上一次提交 如果代码没有任何新变化,则用来改写上一次commit的提交信息
$ git commit --amend -m [message]

修改提交
git commit --amend