sha-1 哈希值 作为指纹字符串 和 索引
**文件有三种状态:已提交(committed) / 已修改(modified) / 已暂存(staged). **
- 已提交表示该文件已经被安全地保存在本地数据库中了;
- 已修改表示修改了某个文件,但还没有提交保存;
- 已暂存表示把已修改的文件放在下次提交时要保存的清单中。
配置工作环境变量
-
git config 工具
-
git config --system 读写 /etc/gitconfig文件 ,对系统所有的用户使用的配置。
-
git config --global ,读写~/.gitconfig文件,用户目录下的配置文件只适用于该用户。
-
.git/config文件,只针对当前项目有效。会覆盖上层的相同配置。
用户信息配置(用户名和邮箱)
- git config --global user.name "Sean"
- git config --global user.email xmtx@gmail.com
文本编辑器
- git config --global core.editor emacs
差异分析工具
- git config --global merge.tool bimdiff
查看配置信息
- git config --list or git config user.name
git 帮助命令
- git --help || git help verber
git 基本命令
初始化新仓库
- git init
git 克隆
- git clone [url]
工作目录下的文件只有两种状态:已跟踪或未跟踪。
查看文件状态
- git satatus
vim命令自己学吧
跟踪新文件
- git add filename
git 忽略文件
创建一个.gitignore文件,列出要忽略的文件模式。
for example:
*.[oa]
*~
第一行忽略以.o或者.a结尾的文件。第二行是忽略以~结尾的文件。
文件.gitignore的格式规范:
-
多有空行或者以注释符号#开头的行都会被Git忽略。
-
可以使用标准的glob模式匹配。
-
匹配模式最后跟反斜杠(/)说明要忽略的是目录。
-
要忽略制定模式以外的文件或目录,可以在模式前加上所谓的glob模式是指shell所使用的简化了的正则表达式。
-
星号(*)匹配零个或多个任意字符;[abc]匹配任何一个列表在方括号中的字符(要么匹配一个a,要么匹配一个b,要么匹配一个c);问号(?)只匹配一个任意字符;如果在方括号中使用短划线分割两个字符,表示所有在这两个字符范围内的都可以匹配(比如[0-9]表示匹配所有0到9的数字)。
demo:
# 此为注释 - 将被Git忽略
# 忽略所有 .a 结尾的文件
*。a
#但lib.a除外
!lib.a
# 仅仅忽略项目根目录下的TODO文件,不包括subdir/TODO
/TODO
# 忽略 build/目录下的所有文件
build/
# 会忽略 doc/notes.txt但不包括soc/server/arch.txt
doc/*.txt
# ignore all .txt files in the doc / directory
doc/**/*.txt
A **/ pattern is available in gIT SINCE VERSION 1.8.2
查看文件具体修改了什么地方
- git diff
查看已经缓存起来的文件和上次提交时的快照之间的差异:
-
git diff --cached
-
git diff --staged (Git 1.6.1以及更高版本)
git diff 不过是显示还没有暂存起来的改动,而不是这次工作和上次提交之间的差异。
- 生成公钥方法
ssh-keygen -t rsa -C “your_email@example.com”
- git tag
git pull 不能默认将所有tag 拉下来 ,因此在拉取之前要先执行,
git fetch --tags
然后 再 git tag 就有了