git FreshMan指南,五分钟上手(图解)
目录
一、Git 工作流程
二、Git 工作区、暂存区和版本库
基本概念
三、Git 的基本操作
创建仓库命令
提交与修改
提交日志
远程操作
四、Git 分支管理
五、Git 查看提交历史
一、Git 工作流程
基本流程如下
- 克隆 Git 资源作为工作流程。
- 在克隆的资源上添加或修改文件。
- 多人修改时,可以更新资源
- 提交前查看历史修改记录
- 提交修改
- 提交完成后,后续发现错误,修改后再提交
二、Git 工作区、暂存区和版本库
基本概念
- 工作区:就是你在本地电脑能看到的目录。
- 暂存区:一般存放在 .git 目录下的 index 文件(.git / index)中,所有也被叫做索引。
- 版本库:工作区有一个隐藏目录 .git, 这个不算工作区,而是 Git 的版本库。
- 图中左侧为工作区,右侧为版本库,版本库中有区域暂存区,标记master的是master分支所代表的目录树。
- 图中的这个HEAD 实践是一个指向master分支的一个游标,图中出现head的地方可以用master替换。
图中的 objects 标识的区域为 Git 的对象库,实际位于 ".git/objects" 目录下,里面包含了创建的各种对象及内容。
当对工作区修改(或新增)的文件执行 git add 命令时,暂存区的目录树被更新,同时工作区修改(或新增)的文件内容被写入到对象库中的一个新的对象中,而该对象的ID被记录在暂存区的文件索引中。
当执行提交操作(git commit)时,暂存区的目录树写到版本库(对象库)中,master 分支会做相应的更新。即 master 指向的目录树就是提交时暂存区的目录树。
当执行 git reset HEAD 命令时,暂存区的目录树会被重写,被 master 分支指向的目录树所替换,但是工作区不受影响。
当执行 git rm --cached <file> 命令时,会直接从暂存区删除文件,工作区则不做出改变。
当执行 git checkout . 或者 git checkout -- <file> 命令时,会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区中的改动。
当执行 git checkout HEAD . 或者 git checkout HEAD <file> 命令时,会用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区和以及工作区中的文件。这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动。
三、Git 的基本操作
本文章只介绍常见的 Git 的命令。
Git 完整命令手册地址: Git - Reference
创建仓库命令
命令 | 说明 |
git init |
初始化仓库。 |
git clone |
拷贝一份远程仓库,也就是下载一个项目。 |
提交与修改
命令 | 说明 |
git add |
从本地添加文件暂存区。 |
git status | 查看仓库当前状态,显示变更的文件。 |
git diff | 比较暂存区和工作区的差异。 |
git commit | 提交暂存区到本地仓库。 |
git reset | 回退版本(我用的比较少)。 |
git rm | 删除工作区文件。 |
git mv | 移动或重命名工作区文件。 |
提交日志
命令 | 说明 |
git log | 查看历史提交记录。 |
git blame <file> | 以列表形式查看指定文件的历史修改记录 |
远程操作
命令 | 说明 |
git remote | 远程仓库操作。 |
git fetch | 从远程获取代码库。 |
git pull | 下载远程代码并合并。 |
git push | 上传远程代码并合并。 |
四、Git 分支管理
使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作。
有人把 Git 的分支模型称为必杀技特性,而正是因为它,将 Git 从版本控制系统家族里区分出来。
作者理解:
在一个团队中,每个人负责的板块不同,所写的代码风格不同,实现的代码依赖不同,但是在master上,大家都功能都是相辅相成的,但是不能直接上传到master上(你不能把你的测试代码上传,有可能会引起其他功能出问题。)最好是每个人都在自己的分支上开发自己的功能实现,测试完毕后,在合并到master上。
命令 | 说明 |
git branch (branchname) | 创建分支 |
git checkout (branchname) |
切换分支命令 当你切换分支的时候,Git 会用该分支的最后提交的快照替换你的工作目录的内容, 所以多个分支不需要多个目录。 |
git merge | 合并分支命令 |
git branch |
列出分支 (-b)(branchname)立即切换到该分支下 (-d)(branchname)删除分支 |
git merge | 分支合并 |
(这个不太好给演示,等后续附加图片)
五、Git 查看提交历史
命令 | 说明 |
git log | 查看历史提交记录。 |
git blame <file> | 以列表形式查看指定文件的历史修改记录。 |
git log --author | 查找指定用户的提交日志可以使用命令 |
git log --since git log -- before |
例如:如果我要看 Git 项目中三周前且在四月十八日之后的所有提交 git log --oneline --before={3.weeks.ago} --after={2010-04-18} --no-merges |
也可以用 --oneline选项来查看简洁的历史记录版本。
还有 --graph选项,是拓扑图哦。
最后可以附加一个学习Git的的有趣网站,学会它就跟打游戏一样!觉得不错可以三连支持一波!Git 小游戏
git FreshMan指南,五分钟上手(图解)相关推荐
- 自动调试自动编译五分钟上手
Browsersync能让浏览器实时.快速响应您的文件更改(html.js.css.sass.less等)并自动刷新页面.更重要的是 Browsersync可以同时在PC.平板.手机等设备下进项调试. ...
- git 代理 git_五分钟解释Git的要点
git 代理 git by James Okunlade 詹姆斯·奥昆拉德(James Okunlade) 五分钟解释Git的要点 (The essentials of Git explained i ...
- MQ(message queue)使用 Spring整合 MQ下载 五分钟上手使用
MQ百度云下载 链接:https://pan.baidu.com/s/1h3s1RF4FE6hN7aUlLuDmkA 提取码:6bit 1.ActiveMQ简介 什么是ActiveMQ ActiveM ...
- AirTest 基本使用及框架浅剖析——五分钟上手制作游戏辅助
简介 Airtest Project 是为编写自动化脚本,达到提升测试效率的一整套解决方案.它可以轻松的扩展到多平台.多引擎上:如基础的 Android和IOS手机应用.App:Windows上的应用 ...
- 五分钟上手Premiere——小白的视频剪辑笔记
Adobe Premiere是当下最为流行的视频剪辑软件之一.之前看别人用过一次,后来恰好有剪辑视频的需要,于是按照残存的记忆摸索之,辅以百度和"51自学网"视频少量,仓促间倒也做 ...
- MAthJax入门教程(五分钟上手)
最近在研究,在页面中显示一些数学公式.搞得我很头疼. 据说MathJax会统一这已领域.所以去学了学.网上教程特别多.繁杂. 说的清楚的特别少. 我是这么跑通的,: 1.在官网下载代码地址为:http ...
- 2015年01月30日 - Git五分钟教程
2019独角兽企业重金招聘Python工程师标准>>> 许多人认为Git太混乱或是复杂的版本控制系统,这篇文章是面向一些人想快速上手使用Git, 对于大多数基本需求这篇文章涵盖了使用 ...
- 【快速上手系列】五分钟即可学会的easyUI的简单使用教程
[快速上手系列]五分钟即可学会的easyUI的简单使用教程 一个简单方便的前端框架 引入文件 引入两个css样式和三个js <!--引入easyUI的样式 --> <link hre ...
- access 提供程序无法确定object 值_Python | 加一行注释,让你的程序提速10+倍!numba库十分钟上手指南...
如果你在使用Python进行高性能计算,Numba提供的加速效果可以比肩原生的C/C++程序,只需要在函数上添加一行@jit的装饰.它支持CPU和GPU,是数据科学家必不可少的编程利器. 之前的文章 ...
最新文章
- 如何得到Mysql每个分组中的第N条记录
- Zabbix 2.4.4升级到Zabbix 3.2.6
- metasploit 一款开源的渗透测试框架
- 离散数学范式c语言实验报告,离散数学实验报告-利用真值表法求主析取范式及主合取范式的实现...
- Java爬虫技术(一)普通网站爬取图片
- 【并查集】小 X 的液体混合
- 雨林木风win11 64位全新专业版系统v2021.08
- python定义变量类型列子_Python系列课程-变量类型
- 网络安全基础——NTFS安全权限
- 浅谈电力巡检机器人功能及特点
- CentOS7各个版本镜像下载地址及说明、Everything版
- 系统自带恶意软件清理助手
- 厦大C在线实验题3 分数约简
- Sentinel demo
- matlab 机床,基于MATLAB的数控机床控制系统的设计及仿真
- vimium快捷操作
- 如何访问部署在家里的服务器(家庭宽带能够申请公网IP)
- 最好的QA(质量保证)测试人员面试问题
- 2018/3/12-2018/3/20
- 中软国际php面试题,中软国际面试题及答案
热门文章
- DDN | 时刻准备,马上出发!
- 处理火绒弹窗拦截无法开机启动
- 地图省界线什么样_echarts geo 下的regions 单独修改地图省份界线样式与颜色
- 铁路及工程相关专业术语自动查询
- 宏碁 (ACER) TravelMate P449-G2-MG安装Win7系统
- html 高度塌陷,前端高度塌陷问题
- 点击按钮播放声音简单实现。
- html按钮按下效果_Animate/FLASH如何为按钮添加声音(无代码)
- SMTP-POP3协议简介以及使用Telnet客户端收/发邮件(163邮箱)
- 重新规划,希望是转机