Git版本控制基本使用知识整理
一、版本控制
1. 版本控制
用于管理多人协同开发项目的技术。
2. 版本控制软件/系统
用来记录文件变化,便于查询特定版本修订情况的系统。
3. 版本控制分类
- 本地版本控制:使用软件记录文件不同版本。
【优点】提高工作效率,降低手工管理的出错率。
【缺点】单机运行,不支持多人协作开发;若版本数据库故障所有历史更新记录丢失。 - 集中版本控制(例如SVN):基于【客户端-服务器】的运行模式,服务器保存文件所有更新记录,客户端只保留最新的文件版本。
【优点】联网运行,支持多人协作开发。
【缺点】不支持离线提交版本更新;中心服务器崩溃所有人无法正常工作;若版本数据库故障所有历史更新记录丢失。 - 分布式版本控制(例如Git):基于【客户端-服务器】的运行模式,服务器保存文件所有更新记录,客户端是服务器的完整备份。
【优点】联网运行,支持多人协作开发;断网后支持离线本地提交版本更新;若服务器故障,可使用任何一个客户端的备份进行恢复。
【缺点】以空间换时间,占用磁盘空间大。
二、Git基本组成
1. Git特性
- 直接记录快照,而非差异比较。版本切换快,占用磁盘空间大。
- 近乎所有操作都是本地执行。联网后将本地修改记录同步到云端服务器。
2. Git四个区域
- 工作区(Workspace):存放项目代码的区域。
- 暂存区(Stage):暂时存放已修改的文件的区域,保存即将提交的文件列表信息。
- 本地仓库(History/Repository):存放提交的所有版本的数据。其中HEAD指向最新版本。
- 远程仓库(Remote):托管代码的服务器,理解为一台远程数据交换的电脑。
3. Git三种状态
- 已修改(modified)
- 已暂存(staged)
- 已提交(committed)
4. Git工作流程
1)在工作区中添加、修改文件;
2)将需要进行版本管理的文件放入暂存区;
3)将暂存区的文件提交到Git仓库。
三、Git基本命令
1. 配置用户信息
Git需要记录谁对项目进行了操作。配置信息被写入全局配置文件.gitconfig中,配置一次即可永久生效。
# 设置用户名
git config --global user.name "Your-username"
# 设置邮箱地址
git config --global user.email "Your-email"
# 查看所有全局配置
git config --list --global
# 查看指定配置项
git config user.name
git config user.email
2. 查看帮助信息
# 打开指定命令config的帮助手册
git help config
# 获取指定命令config的快速参考
git config -h
3. 建立Git仓库
- 将未进行版本控制的本地目录转换为Git仓库
在指定位置执行,即可在此目录位置创建一个.git隐藏目录,.git隐藏目录即当前项目的Gi t仓库,里面包含了初始的Git仓库必要组成部分。
git init
- 从远程服务器克隆一个已存在的Git仓库
git clone url
4. 查看工作区文件状态
# 查看工作区文件状态
git status
# 以精简方式查看工作区文件状态
git status -s
git status --short
# 精简方式下的符号含义
?? untracked
M modified
A added
D deleted
R renamed
C copied
U updated but unmerged
其中,符号红色表示未暂存;绿色表示已暂存。
5. 文件操作
- 跟踪文件/暂存文件
# 跟踪/暂存文件index.html
git add index.html
# 跟踪/暂存所有文件
git add .
- 提交文件【当工作区文件提交后,文件处于unmodified状态】
# 提交暂存区文件index.html
git commit -m "新建了index.html"
# 跳过暂存区,将工作区文件直接提交到Git仓库
git commit -a -m "新建了index.html"
- 撤销对文件的修改,用Git仓库中保存的文件覆盖当前工作区指定文件【不常用】
git checkout -- index.html
- 取消暂存的文件【不常用】
git reset HEAD
- 移除文件
# 从工作区和Git仓库同时移除index.html
git rm -f index.html
# 只从Git仓库移除index.html
git rm --cashed index.html
- 忽略文件【不希望出现在未跟踪文件列表的文件,通过创建.gitignore配置文件设置】
# 举例:
# 忽略所有.a文件
*.a
# 但跟踪所有lib.a
!lib.a
# 忽略任何目录下名为build的文件夹
build/
# 只忽略当前目录下名为TODO的文件
/TODO
# 忽略doc目录及其所有子目录下的.pdf文件
doc/**/*.pdf
- 查看提交历史
git log
# 【注意】在旧版本中查看
git reflog
# 只展示最近两条
git log -2
# 在一行上展示
git log --pretty=oneline
# 在一行上展示,并按自定义格式输出
# %h简写哈希值; %an作者; %ar多久之前修改; %s提交说明文字
git log --pretty=format:"%h | %an | %ar | %s"
- 回退到历史指定版本
git reset --hard <CommitID>
四、Git远程仓库操作(以github为例)
1. 开源许可协议
为了限制使用者的使用范围和保护作者的权利,每个开源项目都应该遵守开源许可协议。
5种常见的开源许可协议:
2. 开源项目托管平台
用于免费存放开源项目源代码的网站。
- Github:全球最牛的开源项目托管平台。
- Gitlab:对代码私有性支持较好,企业用户较多。
- Gitee:码云,国产的开源项目托管平台。访问速度快、纯中文界面、使用友好。
3. 提交到远程仓库
- HTTP:零配置,但每次访问都需要输入用户名和密码。
# 将本地仓库和远程仓库进行关联,并把远程仓库命名为origin
git remote add origin 仓库的http-url
# 将本地仓库中的内容推送到远程仓库
git push -u origin master
- SSH:需要配置SSH Key,配置一次之后都不需要用户名和密码。【实际开发时常用】
SSH Key:实现本地仓库和Github之间免登录的加密数据传输。由两部分组成:
# 输入以下命令,连敲三次回车,生成id_rsa.pub文件,将文件中的内容配置到Github
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
# 验证是否配置成功
ssh -T git@github.com
# 将本地仓库和远程仓库进行关联,并把远程仓库命名为origin
git remote add origin 仓库的ssh-url
# 将本地仓库中的内容推送到远程仓库
git push -u origin master
4. 克隆远程仓库
git clone url
五、Git分支
1. Git分支
多人协作开发时,为了防止相互干扰,提高协同开发的体验,每个开发者都基于分支进行项目开发。
2. 分支分类
- 主分支master:在初始化本地Git仓库时默认创建主分支,用来保存和记录整个项目已完成的功能代码。因此,不允许程序员直接在主分支上修改代码。
- 功能分支:专门用来开发新功能的分支,临时从主分支分叉出去,开发完成后再合并到主分支上。
3. 分支操作
- 查看分支【带星号*的表示当前所处分支】
git branch
- 添加分支
# 添加新分支login并停留在当前分支。【新分支中代码与当前分支完全相同】
git branch login
# 添加新分支login并切换到新分支。
git checkout -b login
- 切换分支
# 切换到login分支。
git checkout login
- 合并分支【存在冲突的分支合并需要手动解决冲突后再提交合并】
# 将login分支合并到当前分支
git merge login
- 删除分支
# 删除login分支
git branch -d login
- 远程分支相关操作【远程仓库默认叫origin】
1)将本地分支推送到远程仓库
# 首次
# 本地分支login推送到远程仓库,命名为in
git push -u orgin login:in
# 本地分支login推送到远程仓库,命名相同
git push -u orgin login
# 之后
git pull
2)查看远程仓库所有分支
git remote show origin
3)跟踪分支,将远程仓库分支下载到本地仓库
# 远程分支in下载到本地仓库,命名为login
git checkout -b login orgin/in
4)将远程仓库代码更新到本地对应分支
git pull
5)删除远程仓库指定分支
# 删除远程仓库的in分支
git push origin --delete in
Git版本控制基本使用知识整理相关推荐
- Git版本控制面试知识小结
今天我们来学习下Git版本控制的知识,Git是目前世界上最先进的分布式版本控制系统(没有之一). 一.git容易混淆的两个概念 工作区: 电脑中所看到的文件目录,project就是一个工作区: git ...
- *Java软件开发面试知识整理*
Java软件开发面试知识整理 围绕以下几点回答问题:是什么.为什么.什么时候用.项目实现.解决什么问题.遇到的困难 谈谈你对Java和C的理解? Java: 面向对象.Unicode:可以跨平台(JV ...
- Git 版本控制之 GitFlow
来源: http://t.cn/EbZKx96 最近在着手制定开发规范,想要把项目正规高效的跑起来.计划引入 Git 版本控制,Git-Flow 便成为了首选.因为之前并没有过多接触,所以先花些时间 ...
- Python介绍与特点(自学python知识整理)
Python介绍与特点(自学python知识整理) Python 简介 Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. Python 的设计: Python 是一种解释 ...
- Tortoise SVN 版本控制常用操作知识
Tortoise SVN 版本控制常用操作知识 Posted on 2010-11-26 23:07 szh114 阅读(5897) 评论(0) 编辑 收藏 今天老大跑过来问我如何把SVN服务器上的当 ...
- git 回滚到某个commit_Git 整理 v1.0 | Git 操作整理进阶篇
多选参数-小林翻唱,请多多支持,附上网易云链接:https://music.163.com/#/song?id=1441451111 0. 前言 这是程序锅对之前学习和使用 Git 做的一份整理,后头 ...
- 2022前端知识整理:十、vue基础
十.vue基础 2022前端知识整理:第十部分.vue基础,仅包含vue2.0相关知识,建议先完成html5.css3和JavaScript ES6之后再学习.部分图片未上传成功,稍后完善,请见谅. ...
- iOS开发面试知识整理 – OC基础 (二)
iOS | 面试知识整理 – OC基础 (二) 1.C和 OC 如何混编 xcode可以识别一下几种扩展名文件: .m文件,可以编写 OC语言 和 C 语言代码 .cpp: 只能识别C++ 或者C语言 ...
- Git版本控制\远程开发\多人协作
Git版本控制\远程开发\多人协作 前言 你将学到 版本控制 版本控制两大主流类型 专业术语 Git的使用 基本配置 创建自己的仓库:init/clone仓库, 本地代码与云端仓库实现同步 工作区到暂 ...
- java中git版本控制,git版本控制管理是什么?git如何实现版本控制?
大家好,今天要跟大家讲的是关于git版本控制管理的一点小知识,git相信程序员小伙伴们都已经很熟悉了,很多项目开发都需要git,所以,git版本控制管理到底是干嘛的呢?Git又如何实现版本控制呢?下面 ...
最新文章
- HTTP与HTTPS区别/HTTPS知识点
- insertAdjacentHTML方法详解
- sh执行文件 参数传递_sh 脚本执行sql文件传参数
- Java算法之旋转数组
- 在Word 2007中轻松插入或创建表格
- 安装Eclipse ADT插件时遇到的一些问题,错误
- 寻找最佳特征维度_寻找5种最佳设计模式书
- Java编程之从零开始学Java——初始java
- linux dhcpv6有状态配置,Centos 7下IPV6 有状态DHCPV6配置
- python机器学习之特征选择(过滤法、嵌入法、包装法案例详解)
- 【云大会】之五《第七届云计算大会 Day1感受:喧嚣退潮、人气萎缩》
- 以太坊的区块和存储(二):区块体之叔区块
- 创建MovieClip类
- 前端进行身份证验证(详细)
- 完成端口(CompletionPort)详解 - 手把手教你玩转网络编程系列之三_zzjlzx-ChinaUnix博客...
- 计算机专业征兵,计算机应用工程系征兵宣传大会顺利召开──保家卫国,学子应征...
- 实验报告-Excel数据可视化
- spring框架之IoC理解
- ISP_DPC坏点矫正
- 忆夕阳下的光辉,给我的父亲