git简介
Git是分布式版本控制系统(Distributed Version Control System,简称 DVCS) ,分为两种类型的仓库:本地仓库和远程仓库。
本地仓库:是在开发人员自己电脑上的Git仓库
远程仓库:是在远程服务器上的Git仓库
Clone:克隆,就是将远程仓库复制到本地
Push:推送,就是将本地仓库代码上传到远程仓库
Pull:拉取,就是将远程仓库代码下载到本地仓库
git的工作流程
工作流程如下:
1.从远程仓库中克隆代码到本地仓库
2.从本地仓库中checkout代码然后进行代码修改
3.在提交前先将代码提交到暂存区
4.提交到本地仓库。本地仓库中保存修改的各个历史版本
5.修改完成后,需要和团队成员共享代码时,将代码push到远程仓库
git的下载和安装
- git国内镜像下载地址:
https://npm.taobao.org/mirrors/git-for-windows/
双击下载的安装文件来安装Git。
安装完成后在电脑桌面(也可以是其他目录)点击右键,如果能够看到如下两个菜单则说明Git安装成功。
Git GUI:Git提供的图形界面工具
Git Bash:Git提供的命令行工具
Git中存在两种类型的仓库,即本地仓库和远程仓库。那么我们如何搭建Git远程仓库呢?我们可以借助互联网上提供的一些代码托管服务来实现,其中比较常用的有GitHub、码云、GitLab等。
gitHub( 地址:https://github.com/ )是一个面向开源及私有软件项目的托管平台,因为只支持Git 作为唯一的版本库格式进行托管,故名gitHub
码云(地址: https://gitee.com/ )是国内的一个代码托管平台,由于服务器在国内,所以相比于GitHub,码云速度会更快
git的常见命令和概念
1.环境配置
设置用户名称和email地址
设置用户信息
git config --global user.name “codeduck”
git config --global user.email “hello@aliyun.com”
查看配置信息
git config --list
git config user.name
通过上面的命令设置的信息会保存在~/.gitconfig文件中
2.获取Git仓库
获取Git仓库通常有两种方式:
- 在本地初始化一个Git仓库
- 从远程仓库克隆
创建一个本地git仓库,执行步骤如下:
- 在电脑的任意位置创建一个空目录(例如repo1)作为我们的本地Git仓库
- 进入这个目录中,点击右键打开Git bash窗口
- 执行命令git init
如果在当前目录中看到.git文件夹(此文件夹为隐藏文件夹)则说明Git仓库创建成功
也可以通过Git提供的命令从远程仓库进行克隆,将远程仓库克隆到本地
命令形式为:git clone 远程Git仓库地址
3.工作目录、暂存区以及版本库概念
版本库:前面看到的.git隐藏文件夹就是版本库,版本库中存储了很多配置信息、日志信息和文件版本信息等
工作目录(工作区):包含.git文件夹的目录就是工作目录,主要用于存放开发的代码
暂存区:.git文件夹中有很多文件,其中有一个index文件就是暂存区,也可以叫做stage。暂存区是一个临时保存修改文件的地方
4.Git工作目录下文件的两种状态
Git工作目录下的文件存在两种状态:
untracked 未跟踪(未被纳入版本控制)
tracked 已跟踪(被纳入版本控制)
- Unmodified 未修改状态
- Modified 已修改状态
- Staged 已暂存状态
这些文件的状态会随着我们执行Git的命令发生变化
git status 查看文件状态
也可以使用git status –s 使输出信息更加简洁
5.本地仓库操作
- git add 将未跟踪的文件加入暂存区
- git reset 将暂存区的文件取消暂存
- git commit 将暂存区的文件修改提交到本地仓库
- git rm 删除文件
6.远程仓库的使用
- git remote add 添加一个新的远程 Git 仓库
- 克隆仓库的命令格式是 git clone [url]
- 移除一个远程仓库 ,可以使用 git remote rm
- git fetch 是从远程仓库获取最新版本到本地仓库,不会自动merge
- git pull 是从远程仓库获取最新版本并merge到本地仓库
注意:如果当前本地仓库不是从远程仓库克隆,而是本地创建的仓库,并且仓库中存在文件,此时再从远程仓库拉取文件的时候会报错(fatal: refusing to merge unrelated histories ),解决此问题可以在git pull命令后加入参数–allow-unrelated-histories - 推送到远程仓库
git push [remote-name] [branch-name]
7.分支
几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线。Git 的master分支并不是一个特殊分支。 它跟其它分支没有区别。 之所以几乎每一个仓库都有 master 分支,是因为git init 命令默认创建它,并且大多数人都懒得去改动它。
关于分支的相关命令,具体如下:
-
查看分支
列出所有本地分支
$ git branch
列出所有远程分支
$ git branch -r
列出所有本地分支和远程分支
$ git branch -a -
创建分支
git branch b1 -
切换分支
git checkout b1 -
推送至远程仓库分支
git push origin b1 -
合并分支
git merge b1
有时候合并操作不会如此顺利。 如果你在两个不同的分支中,对同一个文件的同一个部分进行了不同的修改,Git 就没办法合并它们,同时会提示文件冲突。此时需要我们打开冲突的文件并修复冲突内容,最后执行git add命令来标识冲突已解决 -
删除分支
git branch –d b1 删除
如果要删除的分支中进行了一些开发动作,此时执行上面的删除命令并不会删除分支,如果坚持要删除此分支,可以将命令中的-d参数改为-D
注意:删除远程仓库分支 git push origin -d b1
8.标签
像其他版本控制系统(VCS)一样,Git 可以给历史中的某一个提交打上标签,以示重要。 比较有代表性的是人们会使用这个功能来标记发布结点(v1.0 、v1.2等)。标签指的是某个分支某个特定时间点的状态。通过标签,可以很方便的切换到标记时的状态。
主要操作如下:
-
列出已有的标签
列出所有tag
git tag
查看tag信息
git show [tag] -
创建新标签
git tag [tagName] -
将标签推送至远程仓库
提交指定tag
git push [remote] [tag] -
检出标签
新建一个分支,指向某个tag
git checkout -b [branch] [tag] -
删除标签
删除本地tag
git tag -d [tag]
删除远程tag
git push origin :refs/tags/[tag]
9.查看日志记录
git log 查看日志记录( 按q退出日志信息 )
总结:
git与svn的区别: svn是集中式的版本控制工具,git是分布式版本控制工具
查看文件状态命令:git status
将文件加入暂存区命令: git add
将文件取消暂存命令: git reset
将暂存区文件提交的本地仓库的命令: git commit
删除文件的命令: git rm 删除文件系统系统
添加远程仓库命令:git remote add
远程仓库克隆命令:git clone [url]
远程仓库抓取命令:git fetch
远程仓库拉取命令:git pull
推送远程仓库命令:git push [remote-name] [branch-name]
查看分支命令:git branch
推送至远程仓库分支命令:git push origin
合并分支命令:git merge
删除分支:git branch -d