爬梯:Git
学习资料:狂神说
说明:我已经工作了几年再回头重新看一遍git理论知识做的笔记,内容都是基于我自己不理解的情况才写的,很多东西太基础就没写上了。
Git
分布式版本控制器
版本控制器
版本控制是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管理,是软件配置管理的核心思想之一。
版本控制包括:检入检出控制、分支和合并、历史记录。
常见的版本控制器:
- Git
- SVN(Subversion)
- CVS(Concurrent Versions System)
- VSS(Microsoft Visual SourceSafe)
- TFS(Team Foundation Server)
- Visual Studio Online
版本控制的三种模式:
-
本地版本控制:
在本机记录文件的每次修改,对每个版本保存快照;
如:RCS;
-
集中版本控制:
使用一台机器作为服务器,部署版本控制器服务端,在局域网内多台机器可以进行协同开发;
如:SVN、CVS、VSS;
-
分布式版本控制:
分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库。
1. Git概述
官网:https://git-scm.com/
淘宝镜像:http://npm.taobao.org/mirrors/git-for-windows/
Git与SVN的主要区别:
-
git是分布式的scm,svn是集中式的;
-
git是每个历史版本都存储完整的文件;svn是存储差异文件;
-
git可离线完成大部分操作,svn则不能;
-
git有着更优雅的分支和合并实现;
-
git有着更强的撤销修改和修改历史版本的能力;
-
git速度更快,效率更高;
git在本地有库,不联网都可以commit,联网在push到*仓库。
2. Hello Git
2.1 下载安装Git
可以通过国内镜像下载:
淘宝镜像:http://npm.taobao.org/mirrors/git-for-windows/
然后安装Git。
有三个终端:
- Git Bash:Unix与Linux风格的命令行终端;
- Git CMD:windows风格的命令行终端;
- Git GUI:可视化图形界面的管理终端;
2.2 配置用户名和邮箱地址
推荐使用Git bash,平时瞧瞧linux命令不至于手生。
# 基本Linux命令
pwd # 当前目录路径
touch # 新建一个文件
mv # 移动文件
reset # 重新初始化终端/清屏
clear # 清屏
history # 查看命令历史
打开Git Bash
$ git config --global user.name "huangzw" #名称
$ git config --global user.email "aaa@qq.com" # 邮箱
–global表示全局变量,因为这两个属性你在哪个项目里都是一样的,只做一次配置。
查看git配置信息:
-
系统配置
$ git config --system -l
对应文件是:
D:\Git\etc\gitconfig
-
用户的配置
$ git config --global -l user.name=huangzw user.email=aaa@qq.com
对应文件是:
C:\Users\administrator\.gitconfig
3. Git基本理论
3.1 Git 工作区域
完整的Git拥有四个工作区域:
- Working Directory:本地工作目录
- Stage(Index):暂存区
- History:本地版本库
- Remote Directory:远程版本库、*仓库
本地的三个区域也可以理解为Git仓库中HEAD指向的版本:
- Directory:使用Git管理的目录,也是一个仓库,包含工作空间和Git管理空间;
- Worksapece:需要通过Git进行版本控制的目录和文件,这些目录和文件组成了工作空间;
- .git:存放Git管理信息的目录,初始化仓库的时候自动创建;
- Index/Stage:暂存区,或者叫待提交更新区,在提交进入repo之前,我们可以把所有的更新放在暂存区;
- Local Repo:本地仓库,一个存放在本地的版本库;HEAD只是当前的开发本质(brance);
- Stash:隐藏,是一个工作状态保存栈,用于保存/恢复WorkSpace中的临时状态。
3.2 Git工作流程
- 在工作目录中添加、修改文件;
- 将文件放入暂存区(add);
- 将暂存区的文件提交到本地git仓库(commit);
- 将本地git仓库的修改推送到远程仓库(push)。
3.3 Git 文件状态
Git管理的目录下的文件有五种状态:
- Untracked:未跟踪,不参与版本控制;
- Modified:已修改;
- Staged:已暂存;
- Committed:已提交;
- Unmodify:未修改。
通过下图中的命令修改文件的状态。
4. Git项目搭建
工作目录(Workspace)指的是需要Git管理的目录,尽量使用英文字母命名。
4.1 创建本地仓库
在需要创建工作目录的文件夹右键运行 Git bash。
# 在当前目录新建一个git仓库
$ git init
执行完之后,该目录出现一个隐藏文件 .git。
4.2 克隆远程仓库
当代码已经存在于远程仓库时,我们都需要先从远程仓库中拷贝一份完整的仓库文件到本地。
$ git clone [url] https://******.git
5. Git文件操作
# 查看文件状态,不传参表示查看全部文件状态
git status [filename]
# 将当前目录下的所有文件添加到暂存区
git add .
# 将暂存区中的全部文件提交到本地仓库 -m 提交信息
git commit -m "提交了业务代码"
5.2 忽略文件
一些临时文件日志文件是不需要提交到仓库的,这时为了方便我们操作提交,可以设置忽略文件:.gitignore
基本语法:
# 表示注释
* 表示匹配任意字符
? 表示一个字符
[] 表示值的范围
{} 表示可选字符串
! 表示取反,不会忽略
/ 表示路径分隔符
举例:
# 注释
*.log # 忽略日志文件
.idea/ # 忽略.idea文件夹
6. Git分支
分支的常用命令:
# 列出所有本地分支
git branch
# 列出所有远程分支
git branch -r
# 新建一个分支
git branch [branch-name]
# 新建一个分支,并切换到该分支
git checkout -b [branch]
# 合并指定分支到当前分支
git merge [branch]
# 删除分支
git branch -d [branch-name]
# 删除远程分支
git push origin --delete [branch-name]
git branch -dr [remote/branch]
推荐阅读
-
25个 Git 进阶技巧(翻译)
-
C#/.NET使用git命令行来操作git仓库的方法示例
-
.NET Corek中Git的常用命令及实战演练
-
Android studio怎么使用git获取最新内容然后合并?
-
通过pycharm使用git的步骤(图文详解)
-
Android studio使用git代码追溯到上个文件的教程?
-
Eclipse中本地的git工程怎么导入?
-
解决eclipse中egit中的cannot open git-upload-pack问题
-
Android studio项目怎么使用git版本返回到上个版本?
-
Android studio怎么使用git? 使用git查看本地与远程仓库文件的教程