我们来举个例子,给定下面这样一个整型数组(题目假定数组不存在重复元素): 我们随意选择一个特定值,比如13,要求找出两数之和等于13的全部组合。...由于12+1 = 13,6+7 = 13,所以最终的输出结果(输出的是下标)如下: 【1, 6】 【2, 7】 小灰想表达的思路,是直接遍历整个数组,每遍历到一个元素,就和其他元素相加,看看和是不是等于那个特定值...在哈希表中查找8,发现查不到: 第2轮,访问元素12,计算出13-12=1。...在哈希表中查找1,查到了元素1的下标是6,所以元素12(下标是1)和元素1(下标是6)是一对结果: 第3轮,访问元素6,计算出13-6=7。...在哈希表中查找7,查到了元素7的下标是7,所以元素6(下标是2)和元素7(下标是7)是一对结果: 按照这个思路,一直遍历完整个数组即可。
这一次,我们把问题做一下扩展,尝试在数组中找到和为“特定值”的三个数。 题目的具体要求是什么呢?给定下面这样一个整型数组: ? 我们随意选择一个特定值,比如13,要求找出三数之和等于13的全部组合。...小灰的思路,是把原本的“三数之和问题”,转化成求n次“两数之和问题”。 ?...我们以上面这个数组为例,选择特定值13,演示一下小灰的具体思路: 第1轮,访问数组的第1个元素5,把问题转化成从后面元素中找出和为8(13-5)的两个数: ? 如何找出和为8的两个数呢?...按照上一次所讲的,我们可以使用哈希表高效求解: ? 第2轮,访问数组的第2个元素12,把问题转化成从后面元素中找出和为1(13-12)的两个数: ?...至于空间复杂度,同一个哈希表被反复构建,哈希表中最多有n-1个键值对,所以该解法的空间复杂度是O(n)。 ? ? ? ? 我们仍然以之前的数组为例,对数组进行升序排列: ? ? ?
然而,有时候会发生意外,例如代码误合、错误的删除等情况,导致重要的开发分支本地和远程不慎被删除。本文将为您介绍如何使用 Git 命令行在 GitLab 中恢复已删除的分支,帮助您快速解决这类问题。...运行以下命令查看分支的 Reflog: git reflog _20230722194119.png 在输出中,您将看到提交号(commit hash)以及删除分支之前的引用号。...第二步 恢复分支 现在,您已经有了删除分支之前的引用号,可以使用以下命令在本地仓库中恢复分支: git checkout -b dev_xj d9244f1 dev_xj:你的分支名,可以和之前删除的一样...> 否 描述当前修改的行为详细信息或修改的目的 否 描述当前修改的标识(需求名称编号\bug名称编码等) type 类型说明 值 说明 feat 添加新特性 fix 修复bug docs...Git 提供了强大的版本控制功能,让开发团队能够高效协作。但当意外发生时,我们也有方法来解决问题。通过本文介绍的 Git 命令行恢复方法,您可以轻松地在 GitLab 中恢复已删除的分支。
(Git基础篇—上) 如何克服解决Git冲突的恐惧症?(Git基础篇—下) 如何克服解决Git冲突的恐惧症?(Git分支策略) 如何克服解决Git冲突的恐惧症?...交互式rebase 当你你知道你所需要的提交记录(并且还知道这些提交记录的哈希值)时, 用cherry-pick再好不过了,没有比这更简单的方式了。 但是如果你不清楚你想要的提交记录的哈希值呢?...幸好Git帮你想到了这一点, 我们可以利用交互式的rebase,如果你想从一系列的提交记录中找到想要的记录, 这就是最好的方法了 咱们具体来看一下: 交互式rebase指的是使用带参数--interactive...的rebase命令, 简写为-i 如果你在命令后增加了这个选项, Git会打开一个UI界面并列出将要被复制到目标分支的备选提交记录,它还会显示每个提交记录的哈希值和提交说明,提交说明有助于你理解这个提交进行了哪些更改...在实际使用时,所谓的UI窗口一般会在文本编辑器:如Vim中打开一个文件。 当rebase UI界面打开时, 你能做3件事: 调整提交记录的顺序 删除你不想要的提交 合并提交 接下来看下具体命令: ?
大多数修改提交树的 Git 命令都是从改变 HEAD 的指向开始的。 HEAD 通常情况下是指向分支名的(如 bugFix)。...相对引用(^) 通过指定提交记录哈希值的方式在 Git 中移动不太方便。在实际应用时,并没有像本程序中这么漂亮的可视化提交树供你参考,所以你就不得不用 git log 来查查看提交记录的哈希值。...并且哈希值在真实的 Git 世界中也会更长(译者注:基于 SHA-1,共 40 位)。...但是如果你不清楚你想要的提交记录的哈希值呢?...--interactive 的 rebase 命令, 简写为 -i 如果你在命令后增加了这个选项, Git 会打开一个 UI 界面并列出将要被复制到目标分支的备选提交记录,它还会显示每个提交记录的哈希值和提交说明
本文将从开发者的角度出发,详细介绍如何在Git中创建、管理和运用版本标签。...轻量级标签类似于一个指向特定提交的引用,而带注释的标签则包含了更多的元数据,如创建者、创建日期和标签消息。...这时,你可以指定提交的哈希值:git tag -a v1.0 -m "Release version 1.0" abc123其中abc123是你想要标记的提交的哈希值。...修复完成后,你可以将这个分支合并回主分支,并创建一个新的标签来标记这个修复版本。总结作为开发者,熟练掌握Git版本标签的管理与运用是非常重要的。...通过本文的介绍,你应该已经了解了如何在Git中创建和管理版本标签,并能够在实际项目中灵活运用。合理使用版本标签不仅可以提高你的工作效率,还可以帮助你更好地管理项目的历史版本。
2.2 相对引用(^与~) 该网址中提到通过指定提交记录哈希值的方式在 Git 中移动不太方便。...在实际应用时,并没有像本程序中这么漂亮的可视化提交树供你参考,所以你就不得不用git log来查查看提交记录的哈希值。...并且哈希值在真实的 Git 世界中也会更长,例如提交记录的哈希值可能是fed2da64c0efc5293610bdd892f82a58e8cbc5d8,令人欣慰的是,Git 对哈希的处理很智能。...3.2 交互式的 rebase 当我们知道所需要提交的记录(并且知道这些提交记录的哈希值)时,用cherry-pick再好不过了,但是如果我们不清楚这些,我们此时也可以用交互式的rebase--如果你想从一系列的提交记录中找到想要的记录...,它还会显示每个提交记录的哈希值和提交说明,提交说明有助于你理解这个提交进行了哪些更改。
通过使用标签,你可以轻松地切换到代码库的某个特定状态,而不必查找提交哈希值。发布管理: 在软件开发中,发布时常常使用标签来标记发布的版本。这有助于确保在发布之后,能够轻松地找到和重现发布的代码状态。...易于协作: 在多人协作的项目中,使用标签可以帮助团队成员在共享的代码库中找到共同的参考点,以便更好地协同工作。使用 git tag 命令,你可以创建轻量级标签或附注标签。...以下是 Git 的一些核心概念和功能:分布式版本控制:与集中式版本控制系统(如 SVN)不同,Git 允许每个开发者拥有完整的代码库副本,包括完整的历史记录。...分支策略:Git 支持多种分支策略,如 Git Flow、GitHub Flow 等。钩子(Hooks):Git 允许在特定事件发生时执行脚本,如提交前、推送前等。...子模块(Submodules):允许将一个 Git 仓库作为另一个 Git 仓库的子目录。工作流:Git 支持多种工作流,如集中式工作流、功能分支工作流等。
git commit -m 'c' git checkout 'c' 相对引用 git 中 commit 以 hash 值作为名字,基于 sha-1 的哈希值长达 40 位,虽然 git 对哈希的处理很智能...—— 你只需要提供能够唯一标识提交记录的前几个字符即可,但是使用哈希值仍然很不直观。...交互式 rebase cherry-pick 简单而有效,但前提是你知道想要 commit 的明确的哈希值,想从一系列的提交记录中找到想要的记录,使用交互式 rebase 就是最好的方法了。...如果你在命令后增加了这个选项,git 会打开一个 UI 界面并列出将要被复制到目标分支的备选提交记录,它还会显示每个提交记录的哈希值和提交说明,后者有助于你理解这个提交进行了哪些更改。...(如 origin/master) git fetch 实际上将本地仓库中的远程分支更新成了远程仓库相应分支最新的状态。
# 哈希值 Git 中所有数据在存储前都计算校验和,然后以校验和来引用。 这意味着不可能在 Git 不知情时更改任何文件内容或目录内容。 这个功能构筑在 Git 底层,是 Git 的关键组件。...若你在传送过程中丢失信息或损坏文件,Git 就能发现。 Git 计算校验和的使用 SHA-1 哈希算法。...SHA-1 哈希值看起来是这样: 24b9da6552252987aa493b52f8696cd6d3b00373 Git 中使用这种哈希值的情况很多,你将经常看到这种哈希值。...实际上,Git 数据库中保存的信息都是以文件内容的哈希值来索引,而不是文件名。...所以,使用规范化的 Issue 模板来引导提问者提问,可以大大减轻开发者的负担。 # Github Issue 模板 如何在 Github Issue 平台上创建 Issue 模板呢?
在使用Git进行版本控制时,有时我们可能会犯下错误或者想要撤销最新的本地提交。Git提供了一些强大的工具和命令,使我们能够轻松地撤消最近的提交并修复错误。...图片本文将详细介绍如何在Git中撤消最新的本地提交。步骤1:查看提交历史在撤消最新的本地提交之前,首先需要查看提交历史,以确定要撤消的提交的哈希值。...使用以下命令查看提交历史:git log此命令将显示所有提交的历史记录,包括每个提交的哈希值、作者、日期和提交消息。请注意最新的提交,您将使用其哈希值进行后续操作。...步骤2:撤消最新的本地提交2.1 撤消并删除最新的提交如果您希望完全撤消并删除最新的提交,可以使用git reset命令。...在撤消最新的本地提交后,可以使用以下命令将更改强制推送到远程仓库:git push origin HEAD --force该命令将强制将本地分支的更改推送到远程仓库的相应分支,并覆盖远程仓库中的历史记录
image.png 高级 移动分支 # 使用提交记录上的标签(哈希值)来指定提交记录 git checkout C4 git checkout HEAD^ git checkout HEAD~4 #...所表示的提交记录哈希值的前几位。...的参数 # 切换到本地的master分支,获取所有的commit,再到远程仓库origin中找到master分支,将远程仓库中没有的提交记录都添加上去 git push origin master #...将本地的某个分支推送到远程中的另一个分支 git push origin : # 注意这里的destination也可以是一个新建的分支 git fetch的参数...# 如果git fetch没有任何参数,那么它会下载所有的提交记录到各个远程分支中,即更新所有的远程分支 git push和git fetch的空参数 # 删除远程的foo分支 git push origin
此外,尽管自发布以来开发分支可能已经有新的代码更新,但它依然应该被合并回开发分支。 最后告诉他们分支策略因组织而异,所以我知道基本的分支操作:如删除,合并,检出分支等。...它如何在合并之前解决特性分支中的冲突?...接下来你需要通过一个示例定义 Git rebase 时间窗,以显示如何在合并之前使用它来解决特性分支中的冲突。...所以你可以这么说,为了获得在特定提交中更改的文件列表使用命令: git diff-tree -r {hash} 给定提交哈希值,这个命令将列出在该提交中更改或添加的所有文件。...name-only -r {hash} 这里 -no-commit-id 将禁止提交哈希值出现在输出中,而 -name-only 只会打印文件名而不是它们的路径。
: 仅显示特定路径的提交记录。基本用法:查看提交历史:git log这将显示当前分支的所有提交记录,包括提交的哈希值、作者、日期和提交信息。...查看简洁的提交历史:git log --oneline以简洁的一行格式显示提交记录,每个提交显示其简短的哈希值和提交信息。...git log --abbrev-commit这会显示缩短的提交哈希值,而不是完整的哈希值。--since 和 --until: 显示指定时间范围内的提交记录。...结合多个选项使用:git log --pretty=format:"%h - %an, %ar : %s" --graph --abbrev-commit以自定义格式显示提交记录,并附带图形化表示和简短的哈希值...引用日志记录了对 Git 引用(如分支、HEAD)的所有修改历史,包括提交、合并、重置、移动分支等操作。它在恢复丢失的提交、调试和审计历史方面非常有用。
git相关概念 如果没有版本控制? 备份多个版本,费空间 难于恢复之前的版本 容易引发bug 解决代码冲突困难 为什么使用git?...通过git log --pretty=raw 查看commit配置信息 git cat-file -t 哈希值 (查看具体哪个对象) git cat-file -p 哈希值 (打出具体里面内容...如何在github构建代码仓库 如何将本地项目上传到github中 如何删除代码仓库 github:一个网站,网站搭建了一个供用户管理代码的平台(而且是基于git操作进行管理的一个平台) 使用github...发布项目: github:https://www.github.com,网站搭建了一个供用户管理代码的平台(而且是基于git管理的平台) github在全世界是比较权威的,我们前端开发工程师所需要的框架...把所有的文件添加到暂存区 4、git commit -m '我是备注'暂存区的内容提交到地址区 5、git push origin master 提交到主分支
较为快捷的方式,是根据commit哈希值,直接使用 git checkout hash-value 将 HEAD 指向该提交位置。...哈希值太长,一般长这样 087f52a1faef667934b0ec951f165122c8d8633c 一般使用6-7个首字符, 就可以唯一锁定提交位。...最终造成提交和分支管理的混乱。...对于常用的操作指令,如 git add /the/specfied/file # 本地添加指定文件到仓库 git commit -m "commit message" # 提交信息 git status...# 查看仓库变化 git diff /the/specfied/file # 查看指定文件变化部分 git diff --stat branch_name # 查看分支与当前分支的异同 git commit
还有一个中央云存储库,开发人员可以在其中提交更改并与其他队友共享,如您在图中看到的,所有协作者都在提交更改“远程存储库”。 Q6。解释一些基本的Git命令?...什么是Git rebase?如何在合并之前将其用于解决功能分支中的冲突?...现在,您已经为示例定义了Git变基时间,以展示如何在合并之前使用它解决特征分支中的冲突(如果从master创建了一个功能分支,并且从那时起master分支已收到新的提交,Git变基)可用于将要素分支移至母版的顶端...对于此答案,而不仅仅是告诉命令,请解释此命令的确切作用,这样可以说:要获取在特定提交中已更改的列表文件,请使用命令 git diff-tree -r {hash} 给定提交哈希,这将列出该提交中已更改或添加的所有文件...脚本可以在“ .git”目录下的hooks目录中创建,也可以在其他位置创建,并且可以将指向这些脚本的链接放在目录中。 Q14。您如何在Git中知道分支是否已合并到master中?
还有一个中央云存储库,开发人员可以在其中提交更改并与其他队友共享,如您在图中看到的,所有协作者都在提交更改“远程存储库”。 ? Q6。解释一些基本的Git命令? 以下是一些基本的Git命令: ?...什么是Git rebase?如何在合并之前将其用于解决功能分支中的冲突?...现在,您已经为示例定义了Git变基时间,以展示如何在合并之前使用它解决特征分支中的冲突(如果从master创建了一个功能分支,并且从那时起master分支已收到新的提交,Git变基)可用于将要素分支移至母版的顶端...对于此答案,而不仅仅是告诉命令,请解释此命令的确切作用,这样可以说:要获取在特定提交中已更改的列表文件,请使用命令 git diff-tree -r {hash} 给定提交哈希,这将列出该提交中已更改或添加的所有文件...脚本可以在“ .git”目录下的hooks目录中创建,也可以在其他位置创建,并且可以将指向这些脚本的链接放在目录中。 Q14。您如何在Git中知道分支是否已合并到master中?
功能性分支命名 以一种结构化的方法命名,如//,例如:fix/v1.0.0/authentication。...git tag :想要创建的标签名称; :(可选)想要标记的提交的哈希值。...; :标签信息,简短描述这个标签; :(可选)你想要标记的提交的哈希值。...这样做的好处是它不会改变项目历史。 命令语法 git revert 这里 是你想要撤销的提交的哈希值。...操作流程 找到你想要撤销的提交的哈希值,可以通过 git log 查看提交历史; 执行 git revert 命令并指定相应的哈希值; Git 会创建一个新的提交,这个提交会撤销指定提交所做的所有变更;
哈希表(Hash Table):根据键(key)直接访问数据的数据结构。 集合(Set)和映射(Map):用于存储唯一值和键值对的数据结构。...但是,对于我们普通Java开发来说,不需要全部掌握,个人觉得我们需要掌握:数组、链表、哈希、集合、树,其他几个的特性你需要知道。...Profile 和属性: 使用 Maven Profile 定制不同环境下的构建配置,如开发环境、测试环境、生产环境。 熟悉如何在 POM 文件中使用属性来提取配置信息,使构建过程更灵活。...集成其他工具: 与 IDE 整合:掌握如何在常见的集成开发环境如 IntelliJ IDEA、Eclipse 中使用 Maven。...git checkout new-feature git merge: 将指定分支的更改合并到当前分支。 git merge development 3.
领取专属 10元无门槛券
手把手带您无忧上云