git介绍及使用
一、架构
- 版本库(仓库):工作区中有一个隐藏目录.git,这个目录不属于工作区,而是git的版本库,是git管理的所有内容。
- 暂存区:版本库中包含一个临时区域,保存下一步要提交的文件。
- 分支:版本库中包含若干分支,提交的文件存储在分支中
- 工作区:.git所在目录就是工作区
架构图:

二、远程仓库
上边所说的仓库是本地仓库
多人之间需要共享代码、合并代码,此时就需要一个远程仓库。
常用的远程仓库有github和码云

三、分支
1.分支简介
分支是一个个版本最终存储的位置

2.分支的基本操作
- 查看当前仓库分支
命令:git branch
仓库中默认只有 master分支,当我们执行 git commit时,默认是在 master分支上保存版本。

- 创建分支
在商业项目开发过程中,我们不会轻易的在master分支上做操作。我们会新建一个开发用的分支,在此分支上做版本的记录。当代码确实没有问题时,才会将开发分支上成熟的代码版本添加到 master分支上。既保证开发过程中,可以及时记录版本,又保证 master分支上每个提交点都是稳健版本。
命令:git branch 分支名

上图中可以看到我们又两个分支,一个master,一个dev。注意:master是绿色的且左边有个*号,这表示的是master是当前的有效分支,如果我们使用命令git commit提交一个版本会提交到当前的有效分支master上。
- 切换分支
我们可以切换到指定的分支,则后续的 git commit便会在指定分支上新建版本提交点
命令:git checkout 分支名

3.新建分支的细节
- 每个分支都有一个指针,新建一个分支,首先是新建一个指针。而且新分支的指针会和当前分支指向同一个提交点。
- 新分支和当前分支拥有相同的提交点。(当前分支指的是创建此分支的分支)

多分支的走向:在master分支和新分支分别进行git add 和 git commit 时,分支情况如下图


4.分支日志查看
- 查看简单日志
命令:git log --oneline

- 查看完整日志
命令:git log

5.分支的合并
- 两个分支的合并
命令:git merge 分支名
作用:将指定分支名的分支与当前分支合并
拓展:git log --oneline --graph 此命令可以查看分支合并的走势图

- 快速合并:假如有两个分支maste和dev,快速合并指的是master分支没动,dev分支发生了改动,此时我们只需要将master分支的指针移动到dev分支上即可。
图解:

- 三方合并:原理:将master最新节点相较于节点1的改动,和dev最新节点相较于节点1的改动,和节点1,这三方合并,然后放到master新建的一个节点上。
图解:


6.分支合并冲突
两个分支进行合并,但它们都有对同一个文件的修改,则在合并时会出现冲突,git无法决断该保留改该件哪个分支的修改。

冲突的解决:
git会在发生冲突的文件中,将两个分支的内容合并到该文件中。我们只需要打开该文件,解决冲突后,重新add,然后commit提交即可。




四、常用命令
1. git init
作用:初始化一个空的git仓库

在文件夹中会生成一个.git文件,如下图:

2.git status
作用:查看文件,文件夹在工作区和暂存区的状态

补充:截图哪里突然文字没了,这里补充一下:黄色框中Untracked files 是未跟踪文件的意思,什么是未跟踪文件呢?就是git没有提交到暂存区或分支中的文件。
3. git add 文件名
作用:将指定文件名的文件从工作区加入到暂存区。
拓展: git add . 一次性将工作区中的所有文件添加到暂存区中。(注意add后边有个“.”)
add之后,在通过git status查看,文件会从红色(未跟踪状态)变成绿色(待提交状态)。

4. git commit -m "提交的描述信息"
作用:将暂存区的文件存入分支,形成一个版本

此时再通过git status 查看文件在工作区中的状态

可以看到此时提示没有东西可提交,工作区已清理干净。
5.远程仓库相关命令
注意:要先关联远程仓库才能够将本地仓库的内容push到远程仓库中

git介绍及使用的更多相关文章
- Git介绍及常用操作演示(一)--技术流ken
Git介绍 Git(读音为/gɪt/.)是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常大的项目版本管理. Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发 ...
- 第七章 : Git 介绍 (上)[Learn Android Studio 汉化教程]
Learn Android Studio 汉化教程 [翻译]Git介绍 Git版本控制系统(VCS)快速成为Android应用程序开发以及常规的软件编程领域内的事实标准.有别于需要中心服务器支持的早期 ...
- 【转】Git介绍
版本控制 说到版本控制,脑海里总会浮现大学毕业是写毕业论文的场景,你电脑上的毕业论文一定出现过这番景象! 毕业论文_初稿.doc 毕业论文_修改1.doc 毕业论文_修改2.doc 毕业论文_修改3. ...
- git介绍和常用指令
Git介绍和常用指令 介绍:Git和SVN一样都是版本控制工具.不同的是Git是分布式的,SVN是集中式的.Git开始用可能感觉难点,等你用习惯了你就会觉得svn是有点恐怖.(如果一个项目有好多人一起 ...
- git介绍及安装
git介绍 git是一个开源的分布式版本控制系统,用于敏捷高效的处理任何或大或小的项目.git是linus Torvalds为了帮助管理Linux内核开发的一个开放源码的版本控制软件. Git 与常用 ...
- CI 知识 :Git介绍及常用操作
Git介绍 Git(读音为/gɪt/.)是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常大的项目版本管理. Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发 ...
- Git介绍与简易搭建
Git介绍 Git(读音为/gɪt/.)是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常大的项目版本管理. Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发 ...
- Git介绍、安装、命令和实战
一.Git介绍 Git是一个开源的分布式版本控制系统,可以有效.高速地处理从很小到非常大的项目版本管理. 二.Git安装(Mac系统) 在Git官网下载安装包双击直接安装 在终端输入git来检测Git ...
- git介绍-常用操作(一)
Table of Contents 1 系列文章 2 git说明 3 git常用命令 3.1 基本操作 3.2 远程操作 4 查看git的配置 4.1 查看已配置项 4.2 其他配置 ...
- 版本控制工具Git介绍-01
使用版本控制工具是为了方便团队开发,比如多人共同维护一个项目的时候,用版本控制工具可以很方便的维护项目代码,如果哪天你改了一个版本,出问题了,我们也可以很快的找到你改了什么,这里介绍使用比较多的版本控 ...
随机推荐
- POJ2709 染料贪心
题意: 要搭配出来n种颜料,每种颜料要用mi升,除了这n种颜色还有一个合成灰色的毫升数,灰色是由三种不同的颜色合成的,三种m m m 的不同颜色能合成m升灰色,然后问你满足要求至少要多少盒 ...
- PowerShell-6.文件操作
1.显示文本内容 Get-Content "°C:\\Program Files (x86)\\PsUpdate\\b.dat" 2.得到b.dat文件内容,然后把里面的所有'C' ...
- [CTF]ACSII码
[CTF]ACSII码 ----------转自百度百科 https://baike.baidu.com/item/ASCII/309296?fromtitle=ascii码&fromid=9 ...
- ColyseusJS 轻量级多人游戏服务器开发框架 - 中文手册(中)
快速上手多人游戏服务器开发.后续会基于 Google Agones,更新相关 K8S 运维.大规模快速扩展专用游戏服务器的文章.拥抱️原生 Cloud-Native! 系列 ColyseusJS 轻量 ...
- [BUUCTF-Pwn]hitcontraining_uaf
[BUUCTF-Pwn]hitcontraining_uaf 以此题作为对Pwn中堆利用的学习的开始.堆题初见,肯定有许多地方理解不恰当,希望师傅们能多多指教. 0x00.简述 成因 应用程序调用fr ...
- IO系列测试源码
//IO系列测试源码(需要自取) using System; using System.CodeDom; using System.Collections.Generic; using System. ...
- Morgan Stanley Books List:经典金融书籍推荐
一.经济学 1. 中华帝国的专制制度,佛朗索瓦.魁奈 2. 资本论(共3卷),马恩全集 3. 国家竞争优势,麦克尔.波特 4. Essentials of corporate analysis, by ...
- [MySQL数据库之Navicat.pymysql模块、视图、触发器、存储过程、函数、流程控制]
[MySQL数据库之Navicat.pymysql模块.视图.触发器.存储过程.函数.流程控制] Navicat Navicat是一套快速.可靠并价格相当便宜的数据库管理工具,专为简化数据库的管理及降 ...
- Java并发-显式锁篇【可重入锁+读写锁】
作者:汤圆 个人博客:javalover.cc 前言 在前面并发的开篇,我们介绍过内置锁synchronized: 这节我们再介绍下显式锁Lock 显式锁包括:可重入锁ReentrantLock.读写 ...
- [bug] sqlalchemy.exc.InternalError: (pymysql.err.InternalError) (1054, "Unknown column 'recevie_name' in 'field list'")
Python Flask 开发购物网站,提交订单时报错 根据提示,检查代码,发现是字段名拼写错误导致,数据库对应的字段是receive_name,误写成了recevie_name 另外要注意,灰色字和 ...