第三章 起步
- git --version查看版本号
- git --help查看帮助文档
- 裸双破折号分离参数 git diff -w master origin – tools/Makefile
- 将当前目录或任何目录转化为Git版本库 git init
初始化之后项目目录中,有名为.git的文件 - git status 查看git状态
- git commit 提供日志消息和作者
git commit -m “Initial content of public-html” -author=“John” - 建立基本环境和配置选项
git config user.name “John”
git config user.email “xxx@example.com” - 查看提交历史 git log
- 查看提交的详细信息git show [提交码]
git show没提交码时,只显示最近一次提交的详细信息
git show -branch 当前开发分支简介单行摘要
git show -branch --more=10 额外10个版本 - 查看提交差异 git diff 版本号1 版本号2
- 删除文件git rm [fileName]
例如:git rm poem.html
git commit -m “Remove a poem” - 文件重命名:git mv [file1] [file2]
- git配置文件:
(1).git/config 版本库特定配置
(2)~/.gitconfig用户特定配置
(3)/etc/gitconfig 系统范围内配置 - 建作者名和email,config --global 给/.gitconfig文件中user.name和user.email赋值
git config --global user.name “John”
git config --global user.email “xxx@example.com” - 查找所有变量的设置值
git config -l - 查看配置文件内容 cat .git/config
- 移除配置 git config --unset --global user.email
第四章 基本Git概念
- git主要数据结构
(1)对象库
(2)索引 - Git对象类型:
(1)块(blob)
(2)目录树(tree)
(3)提交(commit)
(4)标签(tag)
对象类型 | 解释 |
---|---|
块 | 文件的每一个版本表示一块,一个blob保存一个文件数据 |
目录树 | 一层目录信息,记录blob标识符、路径名,在一个目录中所有文件的一些元数据。 |
提交 | 提交对象,每一次变化的元数据,包括作者、提交者、提交日期、日志消息。 |
标签 | 一个标签对象分配一个任意的一个特定对象,通常是一个提交对象。 |
-
索引:临时动态二进制文件,描述某个时刻整体结构的一个版本。
索引会记录和保存那些变更,直到已准备好提交。 -
添加一个包含一个文件的新子目录,如下图所示:
-
SHA1=散列码=对象ID
-
git并不关心hello.txt的文件名,只关心文件里的内容是否变化
-
当文件中的内容更改,SHA1值才变化
第五章 文件管理和索引
- Git的索引看作一组打算的或预期的修改,这意味,可以在最终提交前添加、删除、移动或者重复编辑文件,只有在提交后才会在版本库里实现累计的变更。
- 底层命名窥视Git内部状态:git ls-files
查看暂存文件的SHA1值:git ls-files --stage - git diff显示仍存留在工作目录中未暂存的变更
git diff --catched显示已经暂存并且因此有助于下次提交的变更。
最初git diff显示所有修改的大集合,–catch是空的。暂存时,前者的集合会收缩,后者会增加。 所有修改都暂存并准备提交,后者会会增加。所有修改都暂存并准备提交,–catch将是满的。而git diff则是什么都不显示。 - Git将文件分为3类:
[1]已追踪的(Tracked):已在版本库或已暂存到索引的中的文件;如果将xxx.txt添加为已追踪的文件中,执行git add xxx.txt
git add 将每个文件全部内容复制到对象库中,并且按文件的SHA1名来索引。
[2]被忽略的(Ignore):在版本中被明确不可见或被忽略,包括临时文件,个人笔记,编译器输出文件以及构建中自动生成的大多数文件。(编辑器和构建器环境常会在源码文件周围遗留一些临时文件,将这些被忽略文件名添加到一个特殊文件.gitignore中就可以了)
[3]未追踪文的(Untracked):Git目录下除去已追踪和被忽略文件,剩下的为未追踪文件。
例:一旦创建一个data文件,git status将会报告一个未追踪文件。 - git commit -a 或是git common -all执行提交之间自动暂存的所有未暂存的和未追踪的文件变化,Git会递归整个版本库,暂存所有已知的和修改的文件,然后提交它们。
- Git不会处理空(无文本)的提交。
- git rm会 在版本库和工作目录中同时删除文件。
- git rm是针对索引进行操作的命令,它对没有添加到版本库或索引中的文件是不起作用的。
- git rm --catch会删除索引中的文件并把它保留工作目录中,而git rm会将文件从索引和工作目录中都删除。
- git rm -f强制删文件,即使上次提交以来已经修改了文件,还是会删除它。
- 万一想保留不小心删的文件,可以添加回来git add filename
- 移动重命名文件git mv stuff newstuff
- git log --follow filename会让Git在日志中回溯并找到内容相关联的整个历史记录。