敞开成长之旅!这是我参加「日新计划 12 月更文应战」的第32天,点击查看活动概况
01、认识一下Git!—简介
Git是当时最先进、最主流的分布式版别操控系统,免费、开源!核心才能便是版别操控。再具体一点,便是面向代码文件的版别操控,代码的任何修正前史都会被记载办理起来,意味着能够恢复到到曾经的恣意时刻状况。支撑跨区域多人协作修正,是团队项目开发的必备根底,所以Git也就成了程序员的必备技能。
主要特点:
- 开源免费,运用广泛。
- 强大的文档(代码)的前史版别办理,直接记载完整快照(完整内容,而非差异),支撑回滚、对比。
- 分布式多人协作的的代码协同开发,简直一切操作都是本地履行的,支撑代码兼并、代码同步。
- 简单易用的分支办理,支撑高效的创立分支、兼并分支。
Git是Linux之父被迫开发的,为了解决Linux紊乱的代码办理而开发的。Linux和Git之父 李纳斯托沃兹(Linus Benedic Torvalds),来自1969年的芬兰。
02、Git是干什么的?—根底概念
先了解下Git的根本概念,及根本框架、作业流程。
2.1、Git概念汇总
概念称号 | 描述 |
---|---|
作业区(Workspace) | 便是在电脑里能看到的代码库目录,是咱们搬砖的当地,新增、修正的文件会提交到暂存区 |
暂存区(stage 或 index) | 用于暂时寄存文件的修正,实际上上它仅仅一个文件(.git/index ),保存待提交的文件列表信息。 |
版别库/库房(Repository) | Git的办理库房,办理版别的数据库,记载文件/目录状况的当地,一切内容的修正记载(版别)都在这儿。 |
服务端/长途库房(origin 或 remote) | 服务端的版别库,专用的Git服务器,为多人共享供给服务,承当中心服务器的人物。本地版别库经过push指令把代码推送到服务端版别库。 |
本地库房 | 用户机器上直接运用的的的版别库 |
分支(Branch) | 分支是从主线分离出去的“副本”,能够独立操作而互不搅扰,库房初始化就有一个默许主分支master 。 |
头(HEAD) | HEAD类似一个“指针”,指向当时活动 分支 的 最新版别。 |
提交(Commit) | 把暂存区的一切改变的内容提交到当时库房的活动分支。 |
推送(Push) | 将本地库房的版别推送到服务端(长途)库房,与别人共享。 |
拉取(Pull) | 从服务端(长途)库房获取更新到本地库房,获取别人共享的更新。 |
获取(Fetch) | 从服务端(长途)库房更新,效果同拉取(Pull),差异是不会主动兼并。 |
抵触(Conflict) | 多人对同一文件的作业副本进行更改,并将这些更改兼并到库房时就会面临抵触,需求人工兼并处理。 |
兼并(Merge) | 对有抵触的文件进行兼并操作,Git会主动兼并改变内容,无法主动处理的抵触内容会提示人工处理。 |
标签(Tags) | 标签指的是某个分支某个特定时间点的状况,能够理解为提交记载的别名,常用来标记版别。 |
master(或main) | 库房的“master ”分支,默许的主分支,初始化库房就有了。Github上创立的库房默许名字为“main ” |
origin/master | 表明长途库房(origin )的“master ”分支 |
origin/HEAD | 表明长途库房(origin )的最新提交的方位,一般情况等于“origin/master ” |
2.2、作业区/暂存区/库房
作业区、暂存区、版别库是Git最根本的概念,联系如下图:
作业区(Workspace)便是在电脑里能看到的代码库目录,是咱们搬砖的当地,新增、修正的文件会提交到暂存区。
- 在这儿新增文件、修正文件内容,或删除文件。
暂存区(stage或index) 用于暂时寄存文件的修正,实际上上它仅仅一个文件(.git/index),保存待提交的文件列表信息。
- 用
git add
命令将作业区的修正保存到暂存区。
版别库/库房(Repository /rpztri/ 库房)Git的办理库房,办理版别的数据库,记载文件/目录状况的当地,一切内容的修正记载(版别)都在这儿。便是作业区目录下的躲藏文件夹.git
,包含暂存区、分支、前史记载等信息。
- 用
git commit
命令将暂存区的内容正式提交到版别库。 -
master
为库房的默许分支master
,HEAD是一个“指针”指向当时分支的最新提交,默许指向最新的master
。
如上图,为对应本地库房目录的结构联系。
-
KWebNote
为项目目录,也便是Git作业区。 - 项目根目录下躲藏的
.git
目录便是Git库房目录了,寄存了一切Git办理的信息。 -
.git/config
为该库房的配置文件,可经过指令修正或直接修正。 -
index
文件便是寄存的暂存区内容。
2.3、Git根本流程(图)
Git的作业流程核心就下面几个进程,掌握了就能够开端写Bug了。
- 0、准备库房:创立或从服务端克隆一个库房。
- 1、搬砖:在作业目录中增加、修正代码。
- 2、暂存(git add):将需求进行版别办理的文件放入暂存区域。
- 3、提交(git commit):将暂存区域的文件提交到Git库房。
- 4、推送(git push):将本地库房推送到长途库房,同步版别库。
- 5、获取更新(fetch/pull):从服务端更新到本地,获取别人推送的更新,与别人协作、共享。
-
git commit -a
指令省略了add
到暂存区的进程,直接提交作业区的修正内容到版别库,不包括新增的文件。 -
git fetch
、git pull
都是从长途服务端获取最新记载,差异是git pull
多了一个进程,便是主动兼并更新作业区。 -
git checkout .
、git checkout [file]
会清除作业区中未增加到暂存区的修正,用暂存区内容替换作业区。 -
git checkout HEAD .
、git checkout HEAD [file]
会清除作业区、暂存区的修正,用HEAD指向的当时分支最新版别替换暂存区、作业区。 -
git diff
用来对比不同部分之间的差异,如暂存区、作业区,最新版别与未提交内容,不同版别之间等。 -
git reset
是专门用来撤销修正、回退版别的指令,替代上面checkout
的撤销功能。
2.4、Git状况(图)
Git在履行提交的时分,不是直接将作业区的修正保存到库房,而是将暂存区域的修正保存到库房。要提交文件,首先需求把文件加入到暂存区域中。因而,Git办理的文件有三(+2)种状况:
- 未盯梢(untracked):新增加的文件,或被移除盯梢的文件,未树立盯梢,经过
git add
增加暂存并树立盯梢。 - 未修正:从库房签出的文件默许状况,修正后便是“已修正”状况了。
- 已修正(modified):文件被修正后的状况。
- 已暂存(staged):修正、新增的文件增加到暂存区后的状况。
- 已提交(committed):从暂存区提交到版别库。
参考资料
- 博客园 | 深入浅出Git教程
- 猴子都能懂的GIT入门
- 廖雪峰的GIT教程
- 电子书《ProGit-Git教程》
- Gitee码云的 Git 大全,真的挺全
- 敏捷进程实践-git代码分支办理规范
- 易百教程-Git教程?
- 在线Git学习+练习
- GUI Clients Git网站上的GUI东西列表
- Git常用指令调集
️版权申明:版权一切@安木夕,本文内容仅供学习,欢迎纠正、沟通,转载请注明出处!