学习小结之 Git

## Git 学习总结

### Git简介
> Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

### Git 环境配置
**1.**  [下载](https://github.com/git-for-windows/git/releases/download/v2.16.2.windows.1/Git-2.16.2-64-bit.exe)  
**2.**  安装  
  + 默认方式一路next即可    
  + 打开Git Bash,出现如下界面:   
  ![git bash](http://10.1.6.250/wang/picture/raw/master/git%20bash.png)  
  输入指令  `git --version`  
  屏幕输出 : *git version 2.16.2.windows.1*  
  **安装成功!**   

**3.**使用者设置  
  `git config --global user.name "chay"`  
  `git config --global user.email "chay.wang@ourmmy.com"`

### Git 工作流程  
**1.** 从服务器**clone**一个Git仓库到本地,作为工作目录  
**2.** 在克隆的资源上添加或修改文件,若服务器端的库有更新,从服务器上下载更新的内容到本地  
**3.** 查看文件状态及修改情况  
**4.** 提交修改  
**5.** 在修改完成后,若无错误,推送更新到服务器端;若发现错误,可以撤回提交并再次修改并提交,最后推送到服务器端  
   流程示意图如下:  
   ![flow](http://10.1.6.250/wang/picture/raw/master/git%20flow.png)  

### Git 基本概念  

**工作区(Working Directory)**:就是电脑里能看到的目录

**暂存区(Staging Area)**:一般存放在.git目录下的index文件中,所以暂存区也叫作索引(index)

**版本库**:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库,这也是Git能够进行版本控制的关键所在。
下图展示了工作区、版本库中的暂存区和版本库之间的关系:

  ![guanxi](http://10.1.6.250/wang/picture/raw/master/guanxi.png)

### Git 基本操作
**1\.New Local Repository**

   在桌面上新建文件夹**test**作为 local repository    

   输入指令:  
   `cd C:/Users/chay.wang/Desktop`  
   `mkdir test`   
   `cd test`   
   `git init`  
   
   屏幕输出 : *Initialized empty Git repository in C:/Users/chay.wang/Desktop/test/.git/*  
   **创建成功!**  
**2\. 查看当前目录的状态**  

   `git status`

   输出实例如下:

   ![status](http://10.1.6.250/wang/picture/raw/master/status.png)

**3\. 将文件交给Git**  

   1. git add  
     `git add welcome.txt`

   2. git commit  
     `git commit -m "add file:welcome.txt"`

   在Git中,对文件新建、修改、删除都被当做是对文件的一次更改操作,若想保存修改,应重复git add、git commit 操作。  
   
   **注意**:若有些文件不想交给Git管理,可以新建.gitignore文件,在里面设置要忽略的文件格式。  
   `touch .gitignore`

**4\. 取消Git对档案的管理控制**  

   `git rm welcome.txt --cached`

   **不会删除工作目录中的文件**,只是取消Git对文件的管理

**5\. 查看记录**  

  1\.查看commit记录  
   `git log --oneline`

   实例如下:

   *d121b6c (HEAD -> master) modify file*
   *84baa3e add file:welcome.txt*  
   
  2\.查看操作记录  
   `git reflog`  
   
*e34956d (HEAD -> master) HEAD@{0}: commit: add*     
*f2b2a12 (test) HEAD@{1}: commit: new*            
*c91e0ee (origin/master, origin/HEAD) HEAD@{2}: clone: from http://10.1.6.250/wang/test*   

 3\.查看文件的修改记录  
   `git blame new.txt`  
*f2b2a12d (chay 2018-03-29 16:35:52 +0800 1) 4654564*

**6\. 恢复删除的文件(从工作目录删除)**  

   `git checkout welcome.txt`

**7\. Git rest常见用法**  

   1. 文件从暂存区回退到工作区

      `git reset a.txt`

   2. 版本回退

      `git reset HAED^`

      参数说明:

      **soft** :不改变工作目录,拆出来的文件放在暂存区

      **mixed(预设)** : 不改变工作目录,拆出来的文件为未暂存状态

      **hard** :用指定commit的内容覆盖工作区和暂存区


### Git分支管理

**分支是什么?**

> Git中的分支其本质仅仅是一个***指向commit对象的可变指针***,Git会使用master作为分支的默认名字,每次提交master指针都会指向最近一次提交的commit对象。

在Git中,默认会有一条主分支,叫作**master**,另外**HEAD**指向的是当前的分支。

**1\. 查看分支**

   `git branch`

**2\. 创建分支**

   `git branch <branch_name>`

**3\. 切换分支**

   `git checkout <branch_name>`

**4\. 合并某分支到当前分支**

   `git merge <merged_branch>`  
   一般方式:  
   `git checkout master`  
   `git merge dev`  
   ![merge1](http://10.1.6.250/wang/picture/raw/master/merge1.png)  
   ![merge2](http://10.1.6.250/wang/picture/raw/master/merge2.png)  
   rebase方式:  
   `git checkout cat`  
   `git rebase dog`  
   ![rebase1](http://10.1.6.250/wang/picture/raw/master/rebase1.png)  
   ![rebase2](http://10.1.6.250/wang/picture/raw/master/rebase2.png)  
   

**5\. 删除分支**

   `git branch -d <deleted_branch>`

### Git 标签

作用:用于记录重要的历史阶段,如重大更新,版本的确定。

和分支的异同:都是指向commit的指针,但是分支会随commit而移动,标签不能移动。

**1\. 创建标签**

   `git tag v1.0 84baa3e` 

**2\. 查看标签**

   `git tag`

**3\. 删除标签**

   `git tag -d v1.0`

### 远端操作

**1\. Git clone**

   `git clone http://10.1.6.250/wang/test`

![clone](http://10.1.6.250/wang/picture/raw/master/clone.png)

**2\. Git pull**

   `git pull <远程主机名> <远程分支>:<本地分支> `

![pull](http://10.1.6.250/wang/picture/raw/master/pull1.png)

第一次下载库时用**git clone**,后面的更新用**git pull**

**3\. Git push**

   `git push <远程主机名> <本地分支名>:<远程分支名>`

   ![push](http://10.1.6.250/wang/picture/raw/master/push.png)

### 常用命令行指令
|功能|指令|
|-|-|
|切换目录| cd |
|当前位置|pwd|
|文件列表|ls|
|新建目录|mkdir|
|新建文件|touch|
|复制文件|cp|
|移动文件|mv|
|删除文件|rm|
|清屏|clear|  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值