本文主要学习自教程教程

1.Git和其他VCS的区别?

(1)其他VCS主要保存的是文件的变动,而Git每次保存的都是文件的一个快照,如果文件没有改变,则直接保存一个指向上次版本文件的引用,如果文件改变了,就保存整个文件快照,所以Git更像是一个微型的文件系统。 (2)Git几乎所有的操作都是本地的,因为Git每次都分布式的保存了文件的所有版本,不需要从网络上拉取数据。 (3)Git上提交的所有东西都是被校验和验证的,校验和会和文件一起保存,这意味着不能在Git不知道的前提下改变任何文件和目录。Git所使用的验证码称为SHA-1哈希码,该码由40个十六进制字符组成,然后根据文件和目录的内容来计算。Git不是根据文件名来存储,而是根据hash值来存储。

2.Git Three States?

Git保存文件主要有三个阶段:commited,modified,staged。Commited代表文件被保存在本地数据库;Modified代表已经更改了文件,但还没有commit到本地数据库;Staged表示已经标记了更改的文件,并进入下一次提交快照。这三个阶段对应了三个目录:Git目录,working目录,staging区域。 Git states

3.Git编译安装?

请参考文档

4.Git配置?

通过git config命令来配置,主要有三个文件用于保存配置: (1)/etc/gitconfig:保存系统全局配置,适用于所有用户,通过参数–system。 (2)~/.gitconfig或者~/.config/git/config文件:对不同的用户,通过–global实现。如果不加该参数会暂时覆盖 (3).git/config文件:适用于单个仓库的情形。

5.Responsity中的文件状态?

Responsity中的文件有tracked和untracked状态。Tracked文件表示在最新的snapshot中存在;Untracked文件表示不在snapshot和stage的文件。示意图如下: Git lifecycle

6.Git忽略文件?

可以在Git仓库中添加.gitingore文件来忽略添加文件。忽略文件内容格式请参考Git Book,如果不小心添加了忽略的文件,可以使用git rm命令直接删除,该命令可以使用通配符。

7.查看Commit History?

我们使用git log命令来查看提交历史,加上-p参数来显示每次提交的差别,也可以使用–stat来显示短的状态。还可以使用–pretty来自定义格式。参数如下表,也可以使用–graph来直观查看。具体可参考文档

  Option   Description  
  %H   Commit hash  
  %h   Abbreviated commit hash  
  %T   Tree hash  
  %t   Abbreviated tree hash  
  %P   Parent hashes  
  %p   Abbreviated parent hash  
  %an   Author name  
  %ae   Author email  
  %ad   Author date(formate respects the –date=option)  
  %ar   Author date,relative  
  %cn   Committer name  
  %ce   Committer email  
  %cd   Committer date  
  %cr   Committer date,relative  
  %s   Subject  

8.Git撤销更改?

Git使用git commit –amend命令来合并上次的提交。详解可以看图: Git Undo Git使用git reset HEAD 命令来unstage到某个版本的更改。使用git checkout -- 来撤销文件更改。

9.远程访问仓库?

首先使用git remote add添加远程仓库,然后使用git fetch来获取远程仓库,最后使用git merge来合并到本地分支。git pull命令合成了fetch和merge命令。使用git remote show 来查看远程仓库的内容。

10.Git添加标记?

使用git tag命令查看标记,也可以使用-l来查找固定格式的tag。

git tag -l “v1.*”

Git主要使用两种类型的tags:lightweight和annotated。后者比前者更多的信息。 创建Annotated标签:

git tag -a v1.4 -m “version 1.4”

把tag推动到远程仓库中:

git push origin –tags

11.Git别名?

git别名命令:

git config –global alias.co checkout

git config –global alias.br branch

git config –global alias.ci commit

11.Git数据存储格式?

Git数据存储格式如图所示: git tree 如果此时提交,则保存快照,如下图所示: git commits

12.Git分枝?

git的一个分枝就是上图中commits的一个轻量级指针,git中默认使用master分枝来保存最新的一次提交。master分枝和提交历史的图如下所示: git branch 使用git branch命令来创建分枝,结构如下所示: branches Git中使用HEAD指针来表示当前在哪个分枝,创建分枝并不会切换分枝,如图所示: head master 如果使用git checkout testing命令来切换分枝,则HEAD会指向testing分枝,如下图所示: head testing

13.Branch在实际项目中的应用?

(1)切换到你的工作分枝

(2)发现需要修补的功能,创建新的分枝进行开发

(3)测试开发功能,并合并到产品中

(4)切换到原先的分枝去

14.Git merge操作?

使用命令git merge命令把分枝merge到当前分枝,主要的merge操作请参考网页

15.Rebase使用? 合并两个分枝主要有merge和rebase两种方式,rebase用于把一个分枝合并到另一个分枝上而不创建新的分枝,首先我们有两个分枝,如下图所示: Basic rebase 使用rebase命令后,如下图所示: Basic rebasing 最后执行merge命令。

16.Git协议? Git传输数据一共有4种协议:Local,HTTP,SSH,Git。