Git 标签如果你达到一个重要的阶段,并希望永远记住提交的快照,你可以使用 git tag 给它打上标签。Git 标签(Tag)用于给仓库中的特定提交点加上标记,通常用于发布版本(如 v1.0, v2.0)。比如说,我们想为我们的 runoob 项目发布一个 “1.0” 版本,我们可以用 git tag -a v1.0 命令给最新一次提交打上(HEAD) “v1.0” 的标签。-a 选项意为”创建一个带注解的标签”,不用 -a 选项也可以执行的,但它不会记录这标签是啥时候打的,谁打的,也不会让你添加个标签的注解,我们推荐一直创建带注解的标签。标签语法格式:git tag 例如:git tag v1.0-a 选项可以添加注解:
$ git tag -a v1.0
当你执行 git tag -a 命令时,Git 会打开你的编辑器,让你写一句标签注解,就像你给提交写注解一样。
现在,注意当我们执行 git log –decorate 时,我们可以看到我们的标签了:
d5e9fc2 (HEAD -> master) Merge branch ‘change_site’|\| * 77 ...
Git 教程
Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。
Git 与 SVN 区别Git 不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等。如果你是一个具有使用 SVN 背景的人,你需要做一定的思想转换,来适应 Git 提供的一些概念和特征。Git 与 SVN 区别点:
1、Git 是分布式的,SVN 不是:这是 Git 和其它非分布式的版本控制系统,例如 SVN,CVS 等,最核心的区别。
2、Git 把内容按元数据方式存储,而 SVN 是按文件:所有的资源控制系统都是把文件的元信息隐藏在一个类似 .svn、.cvs 等的文件夹里。3、Git 分支和 SVN 的分支不同:分支在 SVN 中一点都不特别,其实它就是版本库中的另外一个目录。
4、Git 没有一个全局的版本号,而 SVN 有:目前为止这是 ...
Git 工作流程本章节我们将为大家介绍 Git 的工作流程。下图展示了 Git 的工作流程:
1、克隆仓库如果你要参与一个已有的项目,首先需要将远程仓库克隆到本地:
git clone https://github.com/username/repo.gitcd repo2、创建新分支为了避免直接在 main 或 master 分支上进行开发,通常会创建一个新的分支:
git checkout -b new-feature3、工作目录在工作目录中进行代码编辑、添加新文件或删除不需要的文件。4、暂存文件将修改过的文件添加到暂存区,以便进行下一步的提交操作:
git add filename
或者添加所有修改的文件git add .5、提交更改将暂存区的更改提交到本地仓库,并添加提交信息:
git commit -m “Add new feature”6、拉取最新更改在推送本地更改之前,最好从远程仓库拉取最新的更改,以避免冲突:
git pull origin main
或者如果在新的分支上工作git pull origin new-feature7、推送更改将本地的提交推送到远程仓库:
...
Git 安装配置在使用 Git 前我们需要先安装 Git。Git 目前支持 Linux/Unix、Solaris、Mac和 Windows 平台上运行。Git 各平台安装包下载地址为:http://git-scm.com/downloads
Linux 平台上安装各大 Linux 平台可以使用包管理器(apt-get、yum 等)进行安装。
Debian/Ubuntu Git 安装最新稳定版本命令为:
apt-get install git
Centos/RedHat如果你使用的系统是 Centos/RedHat 安装命令为:
yum -y install git-core
Fedora 安装命令:
yum install git (Fedora 21 及之前的版本)dnf install git (Fedora 22 及更高新版本)FreeBSD 安装命令:pkg install git
OpenBSD 安装命令:pkg_add gitAlpine 安装命令:apk add git源码安装我们也可以在官网下载源码包来安装,最新源码包下载 ...
Git 基本操作
Git 的工作就是创建和保存你项目的快照及与之后的快照进行对比。本章将对有关创建与提交你的项目快照的命令作介绍。Git 常用的是以下 6 个命令:git clone、git push、git add 、git commit、git checkout、git pull,后面我们会详细介绍。
说明:
workspace:工作区staging area:暂存区/缓存区local repository:版本库或本地仓库remote repository:远程仓库
一个简单的操作步骤:$ git init$ git add .$ git commit
git init - 初始化仓库。
git add . - 添加文件到暂存区。
git commit - 将暂存区内容添加到仓库中。
创建仓库命令下表列出了 git 创建仓库的命令:
命令说明
git init初始化仓库
git clone拷贝一份远程仓库,也就是下载一个项目。
提交与修改Git 的工作就是创建和保存你的项目的快照及与之后的快照进行对比。下表列出了有关创建与提交你的项目的快照的命令:
命令说明 ...
Git 创建仓库本章节我们将为大家介绍如何创建一个 Git 仓库。你可以使用一个已经存在的目录作为 Git 仓库。
git initGit 使用 git init 命令来初始化一个 Git 仓库,Git 的很多命令都需要在 Git 的仓库中运行,所以 git init 是使用 Git 的第一个命令。在执行完成 git init 命令后,Git 仓库会生成一个 .git 目录,该目录包含了资源的所有元数据,其他的项目目录保持不变。使用方法
进入你想要创建仓库的目录,或者先创建一个新的目录:
mkdir my-projectcd my-project
使用当前目录作为 Git 仓库,我们只需使它初始化。
git init
该命令执行完后会在当前目录生成一个 .git 目录。
使用我们指定目录作为Git仓库。
git init newrepo
初始化后,会在 newrepo 目录下会出现一个名为 .git 的目录,所有 Git 需要的数据和资源都存放在这个目录中。
如果当前目录下有几个文件想要纳入版本控制,需要先用 git add 命令告诉 Git 开始对这些文件进行跟踪,然后提交:
$ g ...
Git 分支管理Git 分支管理是 Git 强大功能之一,能够让多个开发人员并行工作,开发新功能、修复 bug 或进行实验,而不会影响主代码库。
几乎每一种版本控制系统都以某种形式支持分支,一个分支代表一条独立的开发线。使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作。
Git 分支实际上是指向更改快照的指针。有人把 Git 的分支模型称为必杀技特性,而正是因为它,将 Git 从版本控制系统家族里区分出来。创建分支
创建新分支并切换到该分支:git checkout -b 例如:git checkout -b feature-xyz
切换分支命令:git checkout (branchname)例如:git checkout main当你切换分支的时候,Git 会用该分支的最后提交的快照替换你的工作目录的内容, 所以多个分支不需要多个目录。查看分支查看所有分支:git branch查看远程分支:
git branch -r查看所有本地和远程分支:
git branch -a合并分支将其他分支合并到当前分支:
git merge 例如,切换到 main 分支并合 ...
Git FlowGit Flow 是一种基于 Git 的分支模型,旨在帮助团队更好地管理和发布软件。Git Flow 由 Vincent Driessen 在 2010 年提出,并通过一套标准的分支命名和工作流程,使开发、测试和发布过程更加有序和高效。Git Flow 主要由以下几类分支组成:master、develop、feature、release、hotfix。Git Flow 安装Linux
Debian/Ubuntu:
sudo apt-get install git-flowFedora:
sudo dnf install gitflowsudo apt-get install git-flowmacOS在 macOS 上,你可以使用 Homebrew 来安装 Git Flow:
brew install git-flow源码安装如果你的发行版的包管理器中没有 Git Flow,你也可以从源代码进行安装:
git clone https://github.com/nvie/gitflow.gitcd gitflowsudo make install安装完成后,你可 ...
适配器模式适配器模式(Adapter Pattern)充当两个不兼容接口之间的桥梁,属于结构型设计模式。它通过一个中间件(适配器)将一个类的接口转换成客户期望的另一个接口,使原本不能一起工作的类能够协同工作。这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。举个真实的例子,读卡器是作为内存卡和笔记本之间的适配器。您将内存卡插入读卡器,再将读卡器插入笔记本,这样就可以通过笔记本来读取内存卡。假设有一个音频播放器,它只能播放 MP3 文件。现在,我们需要播放 VLC 和 MP4 文件,可以通过创建一个适配器来实现:
目标接口:定义一个可以播放多种格式文件的音频播放器接口。适配者类:现有的音频播放器,只能播放 MP3 文件。适配器类:创建一个新的类,实现目标接口,并在内部使用适配者类来播放 MP3 文件,同时添加对 VLC 和 MP4 文件的支持。
概述适配器模式是一种软件设计模式,旨在解决不同接口之间的兼容性问题。目的:将一个类的接口转换为另一个接口,使得原本不兼容的类可以协同工作。主要解决的问题:在软件系统中,需要将现有的对象放入新环境,而新环境要求的接口与现有对象不匹配 ...
迭代器模式迭代器模式(Iterator Pattern)是 Java 和 .Net 编程环境中非常常用的设计模式。迭代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。迭代器模式属于行为型模式。介绍意图允许顺序访问一个聚合对象中的元素,同时不暴露对象的内部表示。主要解决的问题
提供一种统一的方法来遍历不同的聚合对象。
使用场景
当需要遍历一个聚合对象,而又不希望暴露其内部结构时。
实现方式
定义迭代器接口:包含hasNext()和next()等方法,用于遍历元素。创建具体迭代器:实现迭代器接口,定义如何遍历特定的聚合对象。聚合类:定义一个接口用于返回一个迭代器对象。
关键代码
迭代器接口:规定了遍历元素的方法。具体迭代器:实现了迭代器接口,包含遍历逻辑。
应用实例
Java中的Iterator:Java集合框架中的迭代器用于遍历集合元素。
优点
支持多种遍历方式:不同的迭代器可以定义不同的遍历方式。简化聚合类:聚合类不需要关心遍历逻辑。多遍历支持:可以同时对同一个聚合对象进行多次遍历。扩展性:增加新的聚合类和迭代器类都很方便,无需修改现有代码。
缺点
系统复杂 ...