今天这里不系统介绍Git操作原理及命令,不搞那么多花里胡哨,直接上实战。
本文适合初学者学习,也适合老玩家温故。
曾经多少初学者因为Git入过坑
模拟一个场景,教你如何使用Git命令操作。学会命令走遍天下都不怕,不论什么图形化操作原理都一样。
如果想深度了解Git原理,可以去小甲鱼那里学习。https://www.bilibili.com/video/av8261658
一、花1分钟了解一下原理
Git是由Linux发明人Linus,使用C语言写的一个版本控制工具。
为什么Git是版本控制领域的倚天屠龙,下面比较一下Git与SVN。
1.1 SVN记录的是每一次版本变动的内容
SVN类似于写小说,每次修改时没必要把前一版本抄一遍,只是修改错别字(△标示修改部分)。
1.2 Git则是将每个版本独立保存
以前看似扣门的Linus同学在Git迭代时一点都不扣门。每个版本都是独立的保存。比如有File1五个版本,就会有File1的五个拷备。这种设计看似会消耗更多空间,但是在分支管理上它却带来很多的益处和遍利。
用空间换取了时间
普通的程序员是把很多的时间放在写代码和调Bug上,而优秀的程序员是将更多的精力放在设计上!
二、心法
2.1 Git通过维护三棵树来实现版本控制
工作区域(Working Directory)就是你平时存放项目代码的地方(比如本地目录)
暂存区域(Stage)用于临时存放你的改动,事实上它只是一个文件,保存即将提交的文件列表信息(重点它是一个文件,记录列表信息。
可以理解为,准备要做某事,先把它记录到日记本上,这个日记本就相当于暂存区域,不是实际办的事,只是记录而已)
Git 仓库(Repository)就是安全存放数据的位置,这里边有你提交的所有版本的数据。其中,HEAD 指向最新放入仓库的版本(这第三棵树,确切的说,应该是 Git 仓库中 HEAD 指向的版本)
2.2 Git的工作流程一般是酱紫
- 在工作目录中添加、修改文件,此时状态为已修改(modified);
- 将需要进行版本管理的文件放入暂存区域,状态为已暂存(staged);
- 将暂存区域的文件提交到Git仓库,状态为已提交(committed);
三、场景案例
开发团队有开发者 001 和 002 ,现他们共同完成一个项目,下列是 开发者001 和 开发者002 在项目中对Git的操作情况,这里远程仓库为码云。
3.1 001从码云上克隆项目到本地
注意观查本地磁盘目录。
命令:克隆项目
git clone <远程仓库地址>
3.2 001先查看一下自己目前的工作状态
此时还未对项目进行任何修改,查看状态为未修改状态。
命令:查看工作状态
git status
3.3 001开始开发,新建两个新文件并添加文本内容
新建 Z111.txt 和 Z555.txt
3.4 001将自己开发的内容提交到远程仓库
1.先查看工作状态,其中有两个文件修改了
git status
2.命令:添加修改文件到暂存区
git add <文件名/可用正则>
3.命令:提交到本地仓库
git commit -m '提交描述'
4.命令:推送到远程仓库,默认推送到远程master分支
git push origin master
3.5 002将项目从远程克隆到自己的本地
命令雷同 3.1,如下图。
3.6 002进行开发
修改文件 Z111.txt
3.7 开发者002将自己修改的内容提交到运程仓库
命令雷同 3.4,如下图。
3.8 在002开发的同时,001也对自己本地的项目进行了修改
3.9 开发者001也要提交到远程,他还要考虑远程是否有新内容
第四点重视一下。
1.查看工作状态
git status
2.添加修改到暂存区
git add <文件名称>
3.提交到本地仓库
git commit -m '提交描述'
4.考虑到远程仓库是否有其它开发人员提交新内容,所以需要先拉取合并。拉取远程仓库到本地仓库。
git pull origin master
此时由于本地仓库与远程仓库内容不同而导致冲突,提示如下图。
3.10 开发者001合并冲突,将001与002修改的Z111.txt文件内容都保存
开发者 001 打开自己本地工作目录的文件,发现文件变为以下格式。
进行合并,将文件修改为以下。
3.11 开发者001将合并好的文件提交远程仓库
操作雷同 3.4,如下图。
3.12 管理员查看远程仓库,看一下目前提交状况
3.13 开发者002拉取远程仓库的最新内容
命令:拉取
git pull origin master
Git基本操作完成,关于Git常用命令整理与突发情况处理。
敬请期待 — Git实战(下)
作者微信公众号“怪東瓜”,有问题私聊,我们共同探讨实用技术,练出最美身材。