IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> Git一个项目仓库和版本控制工具 -> 正文阅读

[开发工具]Git一个项目仓库和版本控制工具

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

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-03-13 22:01:22  更:2022-03-13 22:02:29 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/27 11:44:19-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计