git 是什么

GIT是一个开源的分布式的版本控制系统,是由Linus 为了管理Linux内核开发而开发的一个开源的版本控制软件。相比SVN,它采用分布式版本库方式。

基本操作指令

1、创建仓库

1
2
3
4
5
6
7
    // a 当前目录创建仓库 

    git init 

    // b 指定目录创建仓库

    git init 目录名

2、设置配置

git的配置范围

global选项是告知Git应该在多大范围内使用这一配置的一种方式–它应该应用到哪些仓库。Git模型旨在应用于多个较小的仓库,而不是较少的整体单一式仓库。由于用户通常会使用多个仓库,因此必须在每个仓库中配置相同的设置会很不方便。因此,Git提供了简化选择配置值范围的选项。有三种可用的级别配置:系统、全局和本地

  ①系统:系统级别的配置意味着一个配置值会被应用到指定系统上的所有仓库,除非在一个较低的级别上对其重写。为了确保配置值应用在系统级别,要为config命令指定–system选项,比如git config –system core.autocrlf true

  ②全局:全局级别的配置表明配置值适用于特定用户的所有仓库,除非在本地级别对其进行了重写。否则这就是用户要使用的最常见级别,因为它避免了必须为每一个仓库设置值的工作。这些设置被存储在每个用户的主目录中的一个名为.gitconfig的文件中

③本地:在本地级别设置一个配置值意味着该设置只应用与一个仓库的上下文中,这对于指定一个特定仓库的唯一设置的场景来说会很有用。如果需要临时重写一个较高级别的设置,那么它也会很有用。本地仓库的配置会被存储在本地Git仓库的.git/config中

全局配置

1
2
3
4
5
6
7
8
git config --global user.name woniu
git config --global user.email woniu@163.com

//git 记住密码

git config --global credential.helper store
git config --local credential.helper store

设置本地仓库配置

1
2
3
git config --local user.name woniu
git config --local user.email woniu@163.com

查看配置信息

1
2
git config --global --list

生成 shh-key

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
//切换到ssh文件夹

cd ~/.ssh

//没有则创建

mkdir ~/.ssh

//git生成密钥
ssh-keygen -t rsa -C "邮件地址"

//生成地址
/C/用户/Admin/.ssh

//测试是否添加成功
ssh git@网址

3、工作文件新增到暂存区

提交指定文件

1
git add a.cpp

提交指当前目录所有文件

1
git add .

把提交过暂存区,已经发生改变的文件再次提交到暂存区

1
git add -u

4、暂存区文件提交到版本库

1
git commit -m "初始版本"

5、查看git提交日志

全部日志

1
git log

简化日志

1
git log --oneline

查看前5个日志

1
git log -n5 --oneline

查看所有日志

1
git log --all

图像化查看所有日志

1
git log --all --graph

6、查看上次提交后是否有修改

1
git status

7、查看差异

查看工作区与暂存区差异

1
git diff

查看暂存区与仓库之间的差异

1
git diff --cached

比较不同commit的差异

1
git diff HEAD1 Mastar2

8、清空暂存区,工作区修改

1
git reset --hard

9、删除工作区和暂存文件

1
git rm 文件名

10、重命名文件

1
git mv a.app  b.app

11、版本回滚

恢复暂存区与head一致

1
git reset HEAD

恢复暂存区指定文件与head一致

1
git reset HEAD --文件名

恢复工作区与暂存区一致

1
git checkout --文件名

回退到指定commit,会清除之前提交的commit

1
git reset --hard HEAD

分支管理

1、创建分支

直接创建

1
git branch dev(分支名)

基于某个历史版本创建分支

1
git branch dev HEAD

2、查看分支

1
2
git branch -av

3、删除分支

1
git branch -d dev

4、切换分支

1
git checkout dev

5、查看分支差异

1
2
3
4
5
git diff dev master

//指定文件差异

git diff dev master -- index

6、本地仓库推送到远端

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
// 1、远端创建git仓库

//2、本地仓库与远端仓库关联
git remote add origin "远端仓库路径"

//3、远端仓库为空则
git push -u origin master
//否则
git pull --rebase origin master

//4、提交到远程仓库
git push origin master

7、拉取远程分支

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
//新分支需要先同步,将远程分支同步到本地
git fetch origin branch1:branch2
//使用远程branch1在本地创建branch2

//拉取远程分支 默认为住分支
git clone git地址

//拉取远程指定分支
git clone -b dev git地址

//拉取主分支后,基于远端指定分支本次创建新分支
git branch -av //红色部分代表远端分支

git branch dev origin/dev //基于远端的dev分支本次创建dev分支

8、Git stash 暂存区

1
2
3
4
5
6
7
8
9
//执行存储区 添加备注

git stash save "save message" 

// 命令行恢复之前缓存的工作目录
git stash pop 

// 查看stash了哪些数据
git stash list