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

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

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

收录于:17天前

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的区别

. . .

相关推荐

额外说明

Springboot+Netty基于天翼物联网平台CTWing(AIOT)实现终端TCP协议(透传模式)-设备终端(南向设备)

电信的天翼物联网平台CTWing(AIOT)原先是我们俗称的aep,主要用于接入nb-iot设备,当然也可以接入其他的设备,在熟悉AIOT平台后,做后端的我有时候急需终端样品(智能门禁,支付识别终端,CPE终端,考勤机等)做北向订阅的应用开发,可南向设备

额外说明

Android中调用WebService服务的主要步骤

首先引入ksoap2-android-assembly-2.5.2-jar-with-dependencies.jar 此处附上链接两个版本的: 1.ksoap2-android-assembly-2.5.4-jar-with-dependencies.

额外说明

排序算法笔记--摩尔投票算法

摩尔投票算法 摩尔投票算法是一种用于在数组中查找出现次数超过一半的元素的有效算法。算法的核心思想是利用候选元素和计数器进行投票,通过消除不同元素之间的抵消来找到出现次数超过一半的元素。 算法原理 如果数组中存在一个出现次数超过一半的元素,那么这个元素的剩

额外说明

【c语言】输入不定长度的字符 并可以测量其长度(非常简单)

#include<stdio.h> int main() { int sum=0; char a[100]; printf("请您输入一行字符: "); gets_s(a); // 注意哈,gets_s函数弄的那个字符是char类型的

额外说明

ES6 —— 构造函数和原型

文章目录 1、利用构造函数创建对象 2、实例成员和静态成员 3、构造函数原型对象 prototype 4、对象原型 `__proto__` 5、constructor 构造函数 6、原型链 7、JavaScript 成员的查找机制(规则) 8、原型对象中

额外说明

单调栈和单调队列

首先我们看到这个题目,大多数人第一想法应该是暴力算法即每往后面走一个就将其与前面的所有数字进行比对,显然这个算法的时间复杂度是o(n^2).那么我们肯定要去降低时间复杂度,那么势必要去研究简化的方法。这种时候我们首先要想我们为什么时间复杂度会高,因为它每

额外说明

【玩转Linux操作】用户管理(命令讲解配上样例解释)

-专栏【玩转Linux操作】 -喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 -音乐分享【Counting Stars 】 欢迎并且感谢大家指出小吉的问题- 文章目录 -添加用户 ⭐命令 ⭐演示 -删除用户 ⭐命令 ⭐演示 -给用户设置和修改密码 ⭐命令

额外说明

大数据学习笔记56:HBase Shell操作

文章目录 一、启动完全分布式HBase (一)在三台虚拟机上启动zk服务 (二)在master虚拟机上启动hdfs服务 (三)在master虚拟机上启动hbase服务 (四)在master虚拟机上启动HBase Shell 二、演示HBase Shell

ads via 小工具