git是一种分布式的版本控制工具。相比集中式的版本控制工具,其可以离线操作,并且可以在计算机上保存一个独立的版本,因此更加安全便捷。

安装
由于使用的是Windows系统,需要先在这里下载msysgit。
安装完成后,可以在相应目录打开git bash,输入以下命令进行配置:
“`
git config –global user.name “xxx”
git config –global user.email “example@xxx.com”

使用

创建本地仓库(mkdir)并进入,使用git init命令初始化仓库;提交可以使用git add filename 和git commit -m "description words"命令;并可以使用git status(或git status -s查看缩减版的信息,此时在每个文件前边有?/A/M/AM四种状态;?表示未追踪,即修改后未更新到暂存区;A即表示add;AM表示add到暂存区后又进行了文件修改)查看文件修改状态以及add和commit的状态;可以使用git log查看版本库中commit的历史详情,可以使用git diff查看已修改但未提交的改动。另外经常需要从github中clone源码,需要使用的命令是git clone repoName <dist_dir>.


git的使用需要理解工作区、暂存区和版本库:工作区为本地文件存储位置,暂存区一般位于.git/index文件,存储的是一般存储的是git add提价的更新,而使用git commit才能将文件的更新同步到版本库.git中。版本库和暂存区都有一个目录树,用于存放文件更新创建的对象索引。每次使用git add提交会在.git/objects对象库中创建提交的对象,而对象的ID会存放在暂存区的索引中;再次使用git commit时,会将暂存区的目录树结构同步到版本库中。当然,可以使用git reset  HEAD命令将版本库中的目录树同步到暂存区中,这样git add提交的文件更新会被覆盖。同样,也可以使用git checkout master -- filename **(filename前有空格)** 将工作区的指定文件替换为暂存区的文件;最后,既然可以用版本库更新暂存区,可以用暂存区更新工作区,那么也有一个命令可以直接用版本库同时更新暂存区和工作区,使用可以使用 git checkout HEAD .或git checkout HEAD filename **(使用需谨慎)**

    注意git rm file(工作区和暂存区的文件均会被删除)和git rm --cached(仅删除暂存区)的区别;git mv filename newFileName命令将暂存区中的文件删除,并将工作区相应的文件重命名后add到暂存区。

一般这些命名的使用顺序为git add,git status,git diff,git commit

```
### git add ###
git add filename1 filename2 ... 

### git status ###
git status    //查看工作区与暂存区的文件状态
git status -s //缩减版信息 

### git diff ###
git diff    //显示尚未同步到暂存区的改动
git diff --cached //显示已缓存的改动,注意区别
git diff HEAD     //显示上次commit与当前的工作目录的差异
git diff --stat   //结合上边的三个选项使用,只显示摘要不显示详细信息

### git commit ###
git commit -m "notation"
git commit -a  //可以将已经add到暂存区中的所有文件更新到版本库(并自动为add到暂存区后又修改的文件使用git add同步到暂存区)
git log //查看提交的历史记录
git log --oneline  //缩减版的信息
git log --oneline --graph //同时启用拓扑图
git log --user     //查找指定用户的提交
git log --reverse  //逆序显示
git log --since<date> --before<date> --after<date> --until<date>            //使用日期条件查找


```

分支管理

```
git branch //显示已有分支
git branch <branchName> //创建分支
git checkout <branchName> //切换分支
git checkout -b <branchName> //创建并立即切换到该分支
git merge <branchName> //将branchName分支合并到当前分支
git branch -d <删除分支>

```

版本回溯
可以使用git log –oneline 和git reflog命令查看commit ID,并且使用git reset命令回溯到之前的版本

``` 
git reset --hard HEAD^   //返回上一个版本
git reset --hard commitID   //返回到特定的commitID版本
```
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐