敞开成长之旅!这是我参加「日新计划 12 月更文应战」的第32天,点击查看活动概况

01、认识一下Git!—简介

Git是当时最先进、最主流的分布式版别操控系统,免费、开源!核心才能便是版别操控。再具体一点,便是面向代码文件的版别操控,代码的任何修正前史都会被记载办理起来,意味着能够恢复到到曾经的恣意时刻状况。支撑跨区域多人协作修正,是团队项目开发的必备根底,所以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入门图文教程①-基础概念

作业区、暂存区、版别库是Git最根本的概念,联系如下图:

Git入门图文教程①-基础概念

作业区(Workspace)便是在电脑里能看到的代码库目录,是咱们搬砖的当地,新增、修正的文件会提交到暂存区。

  • 在这儿新增文件、修正文件内容,或删除文件。

暂存区(stage或index) 用于暂时寄存文件的修正,实际上上它仅仅一个文件(.git/index),保存待提交的文件列表信息。

  • git add 命令将作业区的修正保存到暂存区。

版别库/库房(Repository /rpztri/ 库房)Git的办理库房,办理版别的数据库,记载文件/目录状况的当地,一切内容的修正记载(版别)都在这儿。便是作业区目录下的躲藏文件夹.git,包含暂存区、分支、前史记载等信息。

  • git commit 命令将暂存区的内容正式提交到版别库。
  • master 为库房的默许分支masterHEAD是一个“指针”指向当时分支的最新提交,默许指向最新的master

Git入门图文教程①-基础概念

如上图,为对应本地库房目录的结构联系。

  • 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入门图文教程①-基础概念

  • git commit -a指令省略了add到暂存区的进程,直接提交作业区的修正内容到版别库,不包括新增的文件。
  • git fetchgit 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入门
  • 廖雪峰的GIT教程
  • 电子书《ProGit-Git教程》
  • Gitee码云的 Git 大全,真的挺全
  • 敏捷进程实践-git代码分支办理规范
  • 易百教程-Git教程?
  • 在线Git学习+练习
  • GUI Clients Git网站上的GUI东西列表
  • Git常用指令调集

️版权申明:版权一切@安木夕,本文内容仅供学习,欢迎纠正、沟通,转载请注明出处!