1 git
git功能:
1.版本控制工具
2.协作开发
1.1 Git历史
Git 诞生于一个极富纷争大举创新的年代。Linux 内核开源项目有着为数众多的参与者。 绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上(1991-2002年间)。 到 2002 年,整个项目组开始启用一个专有的分布式版本控制系统 BitKeeper 来管理和维护代码。
到了 2005 年,开发 BitKeeper 的商业公司同 Linux 内核开源社区的合作关系结束,他们收回了 Linux 内核社区免费使用 BitKeeper 的权力。 这就迫使 Linux 开源社区(特别是 Linux 的缔造者 Linus Torvalds)基于使用BitKeeper 时的经验教训,开发出自己的版本系统。
他们对新的系统制订了若干目标:
速度
简单的设计
对非线性开发模式的强力支持(允许成千上万个并行开发的分支)
完全分布式
有能力高效管理类似 Linux 内核一样的超大规模项目(速度和数据量)
1.2 Git与SVN对比
SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而开发人员工作的时候,用的都是自己的电脑,所以首先要从中央服务器下载最新的版本,然后开发,开发完后,需要把自己开发的代码提交到中央服务器。
集中式版本控制工具缺点:
集中开发无法个人回退,而git可以采用分支方式自己回退之前版本
Git是分布式版本控制系统(Distributed Version Control System,简称 DVCS) ,分为两种类型的仓库: 本地仓库和远程仓库
本地仓库:是在开发人员自己电脑上的Git仓库
远程仓库:是在远程服务器上的Git仓库
Clone:克隆,就是将远程仓库复制到本地
Push:推送,就是将本地仓库代码上传到远程仓库
Pull:拉取,就是将远程仓库代码下载到本地仓库
1.3 常用的Git代码托管服务
前面我们已经知道了Git中存在两种类型的仓库,即本地仓库和远程仓库。那么我们如何搭建Git远程仓库呢?我们 可以借助互联网上提供的一些代码托管服务来实现,其中比较常用的有GitHub、码云、GitLab等。
gitHub( 地址:https://github.com/ )是一个面向开源及私有软件项目的托管平台,因为只支持Git 作为唯一的 版本库格式进行托管,故名gitHub
码云(地址: https://gitee.com/ )是国内的一个代码托管平台,由于服务器在国内,所以相比于GitHub,码云速 度会更快
GitLab (地址: https://about.gitlab.com/ )是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具, 并在此基础上搭建起来的web服务
2 git使用方法
2.1 环境配置
当安装Git后首先要做的事情是设置用户名称和email地址。这是非常重要的,因为每次Git提交都会使用该用户信息 设置用户信息
git config --global user.name “itcast”
git config --global user.email “hello@itcast.cn”
查看配置信息
git config --list
git config user.name 通过上面的命令设置的信息会保存在~/.gitconfig文件中
2.2 获取Git仓库
要使用Git对我们的代码进行版本控制,首先需要获得Git仓库 获取Git仓库通常有两种方式:
在本地初始化一个Git仓库
从远程仓库克隆
2.2.1在本地初始化一个Git仓库
执行步骤如下:
- 在电脑的任意位置创建一个空目录(例如repo1)作为我们的本地Git仓库
- 进入这个目录中,点击右键打开Git bash窗口
- 执行命令git init
如果在当前目录中看到.git文件夹(此文件夹为隐藏文件夹)则说明Git仓库创建成功
将想要传输的文件放入到该当前目录中。
2.22 本地仓库操作
git status 查看文件状态
git status
git add 将未跟踪的文件加入暂存区
git add test.java
将新创建的文件加入暂存区后查看文件状态(目标文件颜色变绿)
git reset 将暂存区的文件取消暂存
git reset test.java
将文件取消暂存后查看文件状态(目标文件颜色变红)
git commit 将暂存区的文件修改提交到本地仓库
git commit -m “ init test file” test.java
git rm 删除文件
git rm test.java
将文件取消暂存后查看文件状态显示: deleted: test.java
上面删除的只是工作区的文件,需要提交到本地仓库
git commit -m “delete test.java“
这下可就删的没有了
git log 查看日志记录
2.23版本回退测试 :
修改测试文件test.java (提交到本地仓库后)
提示: modified: test.java
重新加入到本地仓库后,
使用git log查看日志记录
查找想要退回的commit版本序列号
使用 git reset --hard 序列号
文件回退到当时状态
(注意如果是项目则会回退整个项目)
3. 创建远程仓库
登陆码云
)
点击加号 新建 选项任意选择
远程连接 :如图
3.1 git 常用命令:
1.设置用户名称和邮件地址:设置用户信息
git config --globle user.name "xxxx"
git config -- globle user.email "XXXX"
2.查看用户信息:
git config --list
git config user.name
通过上面的命令的设置信息会保存在~/.gitconfig文件中
从本地获取本地仓库
git init
命令 使相当前文件夹为本地git仓库
从远程获取远程仓库 (从远程仓库的 http复制连接)如下:
)
复制后,使用
git clone https://gitee.com/XXXXX
命令,复制远程仓库到本地
3.2工作目录、暂存区以及版本库概念
为了更好的学习Git,我们需要了解Git相关的一些概念,这些概念在后面的学习中会经常提到
版本库:前面看到的.git隐藏文件夹就是版本库,版本库中存储了很多配置信息、日志信息和文件版本信息等
工作目录(工作区):包含.git文件夹的目录就是工作目录,主要用于存放开发的代码
暂存区:.git文件夹中有很多文件,其中有一个index文件就是暂存区,也可以叫做stage。暂存区是一个临时保存修改文件的地方(无法查看的 二进制文件)
3.3 Git工作目录下文件的两种状态
Git工作目录下的文件存在两种状态:
untracked 未跟踪(未被纳入版本控制:自己添加到工作区的文件)
tracked 已跟踪(被纳入版本控制:如远程仓库中clone下来的文件)
- Unmodified 未修改状态(远程仓库中clone下来的文件未被改动)
- Modified 已修改状态(改动远程仓库中clone下来的文件)
- Staged 已暂存状态(改动后将远程仓库中clone下来的文件加入到暂存区)
这些文件的状态会随着我们执行Git的命令发生变化