Git命令
首先需要创建版本库,在某个目录下新建一个testGit版本库,右键通过命令行的方式打开窗口

通过命令 git init 把这个目录变成git可以管理的仓库

Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。
这时候当前testgit目录下会多了一个.git的目录,这个目录是Git来跟踪管理版本的,.git里面内容如下:
创建文件 test.txt 文件,此刻文件在工作区(WorkSpace)
通过 git status 可以查看文件追踪的情况,红色表示在工作区
使用命令 git add test.txt 添加到暂存区去
如果要提交多个文件,在add后面指定文件的列表 git add test1.txt test2.txt

一次提交多个文件至暂存区:
git add -A 提交所有变化至暂存区
git add -u 提交被修改和被删除文件,不包括新文件至暂存区
git add . 提交新文件和被修改文件,不包括被删除文件至暂存区,因为删除操作不进工作区直接进入暂存区
将文件撤销回至工作区
提交文件到主分支
git log 日志
修改操作会将文件退回到工作区
提交到仓库后查看日志和内容
git log --pretty=oneline 精简日志
回退到上一个版本 git reset --hard HEAD^ ,那么如果要回退到上上个版本只需把HEAD^ 改成 HEAD^^ 以此类推
通过sha1的前四位来做回退,git reset --hard 版本号
删除文件命令 git rm test2.txt,发现文件直接进入暂存区
如果想彻底从版本库中删掉了此文件的话,再执行 commit 命令提交
diff 命令
比较工作目录与暂存区 $ git diff
查看文件在工作目录与暂存区的差别,如果还没 add 进暂存区,则查看文件自身修改前后的差别。查看和另一分支的区别 $ git diff
比较暂存区与Git仓库 git diff --cached
表示查看已经 add 进暂存区但是尚未 commit 的内容同最新一次 commit 时的内容的差异。 也可以指定仓库版本 git diff --cached
工作目录 vs Git仓库 git diff
查看工作目录同Git仓库指定 commit 的内容的差异。=HEAD 时查看工作目录同最近一次 commit 的内容的差异。
Git仓库 vs Git仓库 git diff
Git仓库任意两次 commit 之间的差别。
以上命令可以不指定 filename,则对全部文件操作。以上命令涉及和 Git仓库对比的,均可指定 commit 的版本。
配置级别
在git中,我们使用 git config 命令用来配置git的配置文件,git配置级别主要有以下三类:
1、仓库级别 local 【优先级最高】
2、用户级别 global【优先级次之】
3、系统级别 system【优先级最低】
git 仓库级别对应的配置文件是当前仓库下的.git/config
在提示符中输入以下查看配置信息 git config --local -l

git 用户级别对应的配置文件是用户宿主目录下的 ~/.gitconfig
git config --global -l

git系统级别对应的配置文件是git安装目录下的 /etc/gitconfig
git config --system -l
演示修改用户名和邮箱,注意不要手动修改每个级别的配置文件,要使用命令的形式:
git config --global user.name "renliang"
git config --global user.email "renliang@126.com"
对于git来说,配置文件的权重是仓库>全局>系统。Git会使用这一系列的配置文件来存储用户定义的偏好,它首先会查找/etc/gitconfig文件(系统级),该文件含有对系统上所有用户及他们所拥有的仓库都生效的配置值。接下来Git会查找每个用户的~/.gitconfig文件(全局级)。最后Git会查找由用户定义的各个库中Git目录下的配置文件.git/config(仓库级),该文件中的值只对当前所属仓库有效。
.gitignore文件
在使用git的过程中,一般我们总会有些文件无需纳入git的管理,也不希望它们总出现在未跟踪文件列表,这些文件通常是日志文件、临时文件、编译产生的中间文件、工具自动生成的文件等等。
此时我们可以创建一个名为 .gitignore 的文件,列出要忽略的文件模式,Git会根据这些模式规则来判断是否将文件添加到版本控制中。
注意:在windows下可以创建文件名为.gitignore.,保存之后系统会自动重命名为 .gitignore
格式规范
(1)所有空行或者以注释符号 # 开头的行都会被 Git 忽略
(2)可以使用标准的 glob 模式匹配
(3)匹配模式最后跟斜杠(/)说明要忽略的是目录
(4)要忽略指定模式以外的文件或目录,可以在模式前加上感叹号(!)进行取反
glob模式
所谓的 glob 模式是指 shell 所使用的简化了的正则表达式,匹配规则如下:
"*":星号匹配零个或多个任意字符
\]:匹配任何一个列在方括号中的字符,如\[ab\]匹配a或者匹配b "?":问号匹配一个任意字符 \[n-m\]:匹配所有在这两个字符范围内的字符,如\[0-9\]表示匹配所有0到9的数字 匹配示例 logs/: 忽略当前路径下的logs目录,包含logs下的所有子目录和文件 /logs.txt: 忽略根目录下的logs.txt文件 \*.class: 忽略所有后缀为.class的文件 !/classes/a.class:不忽略classes目录下的a.class文件 tmp/\*.txt: 只忽略tmp目录下的.txt文件 \*\*/foo: 可以忽略/foo, a/foo, a/b/foo等 在需要创建 .gitignore 文件的文件夹右键选择Git Bash 进入命令行,进入项目所在目录输入 touch .gitignore,那么在文件夹就生成了一个".gitignore"文件 打开这个文件进行编辑,写规则来操作要忽略的文件 创建 Hello.java 文件,查看状态不在工作区,提交也不会进入暂存区 除了可以在项目中定义.gitignore文件外,还可以设置全局的.gitignore文件来管理所有Git项目的行为,这种方式在不同的项目开发者之间是不共享的,是属于项目之上Git应用级别的行为。 配置方式:可以在任意目录下创建相应的.gitignore文件,然后再使用以下命令配置Git git config --global core.excludesfile \~/.gitignore gitignore规则不生效 .gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的,所以一定要养成在项目开始就创建.gitignore文件的习惯。