小工具      在线工具  汉语词典  css  js  c++  java

Git一个项目仓库和版本控制工具

# Git,git,github,svn 额外说明

收录于:152天前

Git简介

版本控制,在开发过程中每实现一个重要功能就需要保存一个版本,即使异常也能回退版本。Git是一个分布式的版本控制系统,不仅实现版本控制还可以进行多人协同控制。

简单来说,Git只是一个命令行工具,一个分布式版本控制系统。正是它在背后管理和跟踪你的代码历史版本,好比一个时光机,让你在代码出错时不至于手忙脚乱,能快速回退之前的历史版本。 类似的工具还有SVN。

GitHub是一个代码托管网站,背后使用Git作为版本管理工具(而非svn)。主要服务是将你的项目代码托管到云服务器上,而非存储在自己本地硬盘上。
类似的网站还有gitlab.combitbucket.comcoding.com(国内),gitee.com(码云),GitHub中文社区:githubs.cn/

教程

Git环境搭建

  • Git安装:
#安装后,打开设置用户名和邮箱,记录用户信息,git log查看

#执行
git cinfig --global user.name "Your Name"
git config --global user.email@example.com "..."
# 查看信息
git config -l

#测试:cmd,执行查看git版本
git version 

Git应用

Git工作区
在这里插入图片描述
Git仓库
在这里插入图片描述

Git基本操作
在这里插入图片描述

  • git log查看历史记录
  • git status查看状态
  • git add . 转到暂存区
  • git commit -m “版本信息”m是message缩写

版本标签管理

Git回退版本
Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本(指针),上一个版本就是HEAD^,依次时HEAD^2, HEAD^3....
使用git reset指令:

git reset -hard HEAD^1

-- hard 表示回退到之前版本,数据会抹除,没有修改记录
-- soft 表示回退版本但会保留改动记录并会添加到暂存区
-- mix 表示回退版本也会保留距离,但是任然在工作区

Git不仅能像后回退还能向前回退,回退到了某个版本,又想恢复到新版本怎么办?找到到新版本的commit id通过id来恢复新版本。

Git提供了一个命令git reflog用来操作日志的指令id:
在这里插入图片描述

//通过id恢复指令之前的版本
git reset --hard id""

在这里插入图片描述

Git还原文件
当你编写了一小段代码,导致项目跑不起来是回退版本是非常可惜的可以使用git checkout -- 文件路径来撤回之前的代码。

命令git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:

  • 一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

  • 一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

总之,就是让这个文件回到最近一次git commit或git add时的状态。

git checkout -- file命令中的--很重要,没有--,就变成了“切换到另一个分支”的命令

当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file

当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD <fileId>,就回到了提交前,再次git checkout -- file撤销编辑的内容。

Git删除文件
如果发现某些文件不再需要了,可以使用git rm "文件路径"来删除它。
Git远程仓库
前面的仓库是本地仓库,多人协同开发时每个人都在本地维护版本,若多人之间需要共享代码,合并代码则需要远程仓库。

在这里插入图片描述
在这里插入图片描述

mkdir bolen
cd bolen  //创建本地目录
git init //初始化本地git仓库
vi README.txt
git add README.txt      //转到工作区
git commit -m "first commit"     //提交到master分支
git remote add origin "仓库地址"   //关联远程仓库
git push -u origin "master"         //上传到远程仓库的分支master


git remote -v   //查看远程仓库版本
git pull   //远程仓库下载分支

git remote add origin "仓库地址"关联远程仓库,Git支持多种协议,默认的git://使用ssh,但也可以使用https。取决于仓库地址,使用ssh会生成公钥,并保存,之后就可以直接上传分支了,使用https的每次需要输入认证信息。

把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。

如果添加的时候地址写错了,或者就是想删除远程库,可以用git remote rm <name>命令。使用前,建议先用git remote -v查看远程库信息。

//通过该命令来删除它origin对应远程仓库名
git remote rm "origin"

Git添加出现的错误
在这里插入图片描述
LF和CRLF是一种换行机制windows和linux,mac不同。
git命令更改默认换行处理:git config --global core.autocrlf false
false是可选值有三个参数,当为true时,这意味着你在任何时候添加(add)文件到git仓库时,git都会视为它是一个文本文件(text file),它将把crlf变成LF。当为false当设置成false时不做转换操作,文本文件保持原来的样子。input把CRLF改为LF,window不适用。

在这里插入图片描述
出现该错误是项目的所有文件每被提交到暂存区,重新执行:git commit即可
在这里插入图片描述

Git克隆到本地

将服务器上的仓库中的项目克隆到本地git clone "地址"

在这里插入图片描述

Git分支

在这里插入图片描述
每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。Git中master分支叫主分支。HEAD指向的就是当前分支。提交命令会提交当前分支的内容。

在这里插入图片描述
Git创建一个分支增加一个dev分支,改改HEAD(指针)的指向,工作区的文件都没有任何变化。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
切换分支后,对工作区的修改和提交就是针对dev分支了,比如新提交一次后,dev指针往前移动一步,而master指针不变:
在这里插入图片描述

我们注意到切换分支使用git checkout <branch>,而前面讲过的撤销修改则是git checkout -- <file>,同一个命令,有两种作用,确实有点令人迷惑。最新版本的Git提供了新的git switch命令来切换分支:

创建并切换到新的dev分支,可以使用:
git switch -c dev

直接切换到已有的master分支,可以使用:
git switch master

实际上,切换分支这个动作,用switch更科学。因此,最新版本的Git提供了新的git switch命令来切换分支:
在这里插入图片描述
在这里插入图片描述
还有一种方法时三方合并,两个分支都提交,在在master中再次提交。master又生成一个节点。

在这里插入图片描述

合并冲突
在这里插入图片描述
冲突后git会将冲突部分标识在当前分支的文件中,去修复冲突再次提交。
在这里插入图片描述

版本的控制是基于分支实现的如dev分支为默认分支时,其执行暂存命令git commit另一个master分支的指针就会指向当前提交的节点,再次提交指针再次移动,当某次修改发生错误时,切换分支就回到了上一版本。

Git与IDEA关联

在这里插入图片描述
然后到创建的目录下git init即可,该文件就变成了一个本地仓库。

或者通过IDEA的VSC版本控制(Vsersion Control Show)实现仓库创建:

在这里插入图片描述

注意:IDEA创建项目时有许多文件时不需要上传到服务器的仓库的,例如:

在这里插入图片描述
图中画线的部分,一些是记录文件的本地信息,一些是生成的编译后的文件,或者properties,yaml配置文件这些对于其他用户克隆的来说本地环境完全不一样,而且记录文件信息的文件在打开项目时也会自动生成,即使上传了反而不起作用。

通过.gitignore文件排除不需要的文件
在这里插入图片描述
忽略文件在仓库之间创建,
在这里插入图片描述
Idea对git的实现都是在VCS中。包括提交,下载,克隆,下载中文插件方便操作 -

多人协同开发

在这里插入图片描述
视频教程
GitHub使用
GitHub官方教程
GitHub中文社区
Gitee使用

SVN和git的区别

. . .

相关推荐

额外说明

线程的生命周期

一图胜千言! 灵魂画家出品。 上述的图有些简略,下面详细说明下,线程共有6种状态: new,runnable,blocked,waiting,timed waiting,terminated 1,当进入synchronized同步代码块或同步方法时,且没

额外说明

InfluxDB使用教程:InfluxDB中的数据结构概念

前言: 在前面两讲中,介绍了InfluxDB的安装和使用,这一讲来介绍InfluxDB中数据结构的基本概念,以及使用中要注意问题,。 一. InfluxDB基本数据结构 数据结构 含义 database 数据库 measurement 数据库中的表 re

额外说明

解决request请求流只能读取一次的问题

解决request请求流只能读取一次的问题   实际开发碰到的问题   解决request请求流中的数据二次或多次使用问题 实际开发碰到的问题        springboot项目中,为了防止sql注入,采用Filter拦截器对所有请求流中的json数

额外说明

【C#进阶3-6】C#多线程

一、目录 【Unity3D从入门到进阶】文章目录及设置这个专栏的初衷 二、定义 线程 被定义为程序的执行路径。每个线程都定义了一个独特的控制流。如果您的应用程序涉及到复杂的和耗时的操作,那么设置不同的线程执行路径往往是有益的,每个线程执行特定的工作。 线

额外说明

python(matplotlib2)——legend图例,Annotation图片注解

文章目录 前言 legend 图例 将figure的边框消除 figure中设置x,y坐标轴位置 Annotation图片注解 标注一个点 更多标注 前言 来自 莫烦python的总结。 legend 图例 x = np.linspace(-1,1,50

额外说明

I2C调试总结

I2C调试总结: http://mirrors.edge.kernel.org/pub/software/utils/i2c-tools/ I2C-tools工具源代码 https://blog.csdn.net/weixin_43824344/arti

额外说明

Excel中插入柱状图以及在图下方显示数据表

在Sheet中插入柱状图 在Excel 中, 有如下数据: 上面的数据是学生学科分数的统计, 第一行是学科 第一列是姓名 要插入上面数据的柱状图的步骤如下: 选中数据单元格, 包含标头 点击 “INSERT” (插入)标签页 找到柱状图,点击选择需要的样

额外说明

Spring Cloud 存取session 问题

Spring Cloud 存取session 问题 使用spring cloud zuul后想要存取session,必须在yaml文件中添加下面配置 ensitiveHeaders: "*" 完整配置如下: zuul: host: conn

额外说明

前端(二十五)——前端实现 OCR 图文识别的详细步骤与示例代码

-博主:小猫娃来啦 -文章核心:前端实现 OCR 图文识别的详细步骤与示例代码 文章目录 OCR技术的介绍 第一步:确定使用的 OCR API 第二步:创建前端界面 第三步:添加图像上传功能 第四步:发送识别请求和处理识别结果 第五步:完善代码添加注释

额外说明

如何使用BackWPup免费创建完整的WordPress备份

Backups are one of the best defense against any sort of security threat toward your site. Regular backups are one thing that ev

ads via 小工具