## 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|
学习小结之 Git
最新推荐文章于 2024-09-06 10:38:13 发布