GIT学习笔记
一、什么是GIT
Git是一个版本管理控制系统(缩写VCS),它可以在任何时间点,将文档的状态作为更新记录保存起来,也可以在任何时间点,将更新记录恢复回来。
在开发中,Git已成为现在主流的一种代码托管技术(版本管理工具),基本上大多数的公司都在使用Git进行协同开发。很多代码托管平台也是基于Git来实现的。
二、GIT和SVN的区别
SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器得到最新的版本,然后干活,干完后,需要把自己做完的推送到中央服务器。集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网速慢的话,并不方便。
Git是分布式版本控制系统,它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。在多个人如何协作时只需把各自的修改推送给对方,就可以互相看到对方的修改了。
三、GIT底层结构
1、工作区 (workspace)
当前工作空间,也就是当前能在本地文件夹下面看到的文件结构。初始化工作空间或者工作空间 clean 的时候,文件内容和 index 暂存区是一致的,随着修改,工作区文件在没有 add 到暂存区时候,工作区将和暂存区是不一致的。
2、 暂存区 (index)
老版本概念也叫 Cache 区,是文件暂时存放的地方,所有暂时存放在暂存区中的文件将随着一个 commit 一起提交到 local repository 此时 local repository 里面文件将完全被暂存区所取代。
3、本地仓库 (local repository)
git 是分布式版本控制系统,和其他版本控制系统不同的是他可以完全去中心化工作,可以不用和中央服务器 (remote server) 进行通信,在本地即可进行全部离线操作,包括 log,history,commit,diff 等等。完成离线操作最核心是因为 git 有一个几乎和远程一样的本地仓库,所有本地离线操作都可以在本地完成,等需要的时候再和远程服务进行交互。
4、 远程仓库 (remote repository)
中心化仓库,所有人共享,本地仓库可以和远程仓库进行交互,也就能将其他所有人内容更新到本地仓库把自己内容上传分享给其他人。结构大体和本地仓库一样。
四、基本操作
1、初始化git仓库
git
git init 本地目录
将本地的某个路径作为本地仓库时,需要执行此命令,会在当前目录下生成一个.git的隐藏文件,.git文件夹下的目录如下
分支 | 类型 | 说明 |
---|---|---|
config | 文件 | 配置文件 |
objects | 目录 | 存储所有Git的数据对象 |
HEAD | 文件 | 指定当前分支 |
info | 目录- | 存放项目信息,默认包含一个全局exclude文件, 用来放置不希望记录在.gitignore 中的忽略模式 |
description | 文件 | 仅供GitWeb 程序使用 |
hooks | 目录 | 存放可在某些指令前后触发运行的钩子脚本(hook s),默认包含一些脚本样例 |
refs | 目录 | 存储各个分支指向的目标提交 |
branches | 目录 |
2、从git远程仓库拷贝项目
git
git clone git仓库的地址 本地的文件位置
类似于SVN的checkout
3、配置用户信息
有的时候我们不仅仅服务于一个项目,在公司需要用公司的个人信息,而在外部需要设置为个人的邮箱信息(虽然没什么实质性的作用,但总是比较规范的)
git
git config --global user.name '用户名'
git config --global user.email '邮箱'
4、将本地文件添加到缓存区
将某个文件添加到缓存区
git
git add 文件路径
将某个后缀的文件添加到缓存区
git
git add *.java
5、查看文件状态
git
git status 文件名
6、放弃未暂存的文件修改
git
git checkout --文件名
用暂存的文件替换掉本地文件
7、提交文件
git
git commit 文件名 -m '提交说明'
其中 -m 可以省略
直接提交本地文件,并缓存
git
git commit 文件名 -am '提交说明'
8、查看更新的详细信息
查看尚未缓存的改动
git
git diff 文件名
查看已缓存的改动
git
git diff --cached 文件名
查看已缓存的与未缓存的所有改动
git
**git diff HEAD 文件名
查看摘要
git
git diff --stat 文件名
9、取消缓存
git
git reset HEAD 文件名
10、删除文件
从git仓库删除文件
git
git rm 文件名
从缓存区删除文件
git
git rm --cashed 文件名
11、文件重命名
git
git mv 文件名 新文件名
五、分支管理
1、查看分支
git
git branch
2、创建分支
git
git branch 分支名
3、切换分支
git
git checkout
4、合并分支
将某个分支合并到当前分支
git
git merge 分支名
5、删除分支
git
git branch -d 分支名
六、远程仓库
1、添加远程仓库到本地
git
git remote 远程仓库的本地名称(自定义) 远程仓库地址
查看本地添加的远程仓库名
git
git remote
2、查看远程分支
git
git branch --remote
3、从远程仓库获取数据
git
git fetch 远程仓库别名
将从远程仓库获取的数据合并到某个分支
git
git merge 远程仓库别名/分支名
从远程仓库获取数据并合并到本地分支
git
git pull 远程仓库别名 分支名
4、推送新的分支到远程仓库
git
git push 远程仓库别名 分支名
5、删除远程仓库
git
git remote 远程仓库别名