git
文章平均质量分 91
git 分布式版本控制系统
canpool
21世纪IT民工,技能不知多少
展开
-
git 知:教程
git 入门教程- Book原创 2021-09-02 23:10:23 · 654 阅读 · 0 评论 -
git 知:提交格式
git是一个分布式版本控制系统,它可以用来记录一个或若干个文件内容的变化,以便将来查阅特定版本的修订情况。为了便于追溯,那么每次的变化就需要做好记录,不然到时候再看,可能就不明其意了。本文所讲的提交格式,实际上就是对每次记录所做的规范说明,按照所说的格式书写,将便于以后维护。.........原创 2022-07-27 00:32:10 · 983 阅读 · 0 评论 -
git 知:内部原理
包括:底层命令与上层命令,Git 对象,Git 引用,包文件,引用规范,传输协议,维护与数据恢复,环境变量原创 2021-09-27 00:00:00 · 1887 阅读 · 0 评论 -
git 知:钩子
文章目录安装一个钩子客户端钩子提交工作流钩子电子邮件工作流钩子其它客户端钩子服务器端钩子pre-receiveupdatepost-receive参考和其它版本控制系统一样,Git 能在特定的重要动作发生时触发自定义脚本。 有两组这样的钩子:客户端的和服务器端的。 客户端钩子由诸如提交和合并这样的操作所调用,而服务器端钩子作用于诸如接收被推送的提交这样的联网操作。 你可以随心所欲地运用这些钩子。安装一个钩子钩子都被存储在 Git 目录下的 hooks 子目录中。 也即绝大部分项目中的 .git/hoo原创 2021-09-25 00:18:27 · 675 阅读 · 0 评论 -
git 知:属性
文章目录二进制文件识别二进制文件比较二进制文件关键字展开导出版本库export-ignoreexport-subst合并策略参考你也可以针对特定的路径配置某些设置项,这样 Git 就只对特定的子目录或子文件集运用它们。 这些基于路径的设置项被称为 Git 属性,可以在你的目录下的 .gitattributes 文件内进行设置(通常是你的项目的根目录)。如果不想让这些属性文件与其它文件一同提交,你也可以在 .git/info/attributes 文件中进行设置。通过使用属性,你可以对项目中的文件或目录单原创 2021-09-25 00:16:59 · 255 阅读 · 0 评论 -
git 知:替换
文章目录参考我们之前强调过,Git 对象数据库中的对象是不可改变的, 然而 Git 提供了一种有趣的方式来用其他对象 假装 替换数据库中的 Git 对象。replace 命令可以让你在 Git 中指定 某个对象 并告诉 Git:“每次遇到这个 Git 对象时,假装它是 其它对象”。 在你用一个不同的提交替换历史中的一个提交而不想以 git filter-branch 之类的方式重建完整的历史时,这会非常有用。例如,你有一个大型的代码历史并想把自己的仓库分成一个短的历史和一个更大更长久的历史, 短历史供原创 2021-09-25 00:15:47 · 221 阅读 · 0 评论 -
git 知:打包
文章目录参考Git 可以将它的数据“打包”到一个文件中。 这在许多场景中都很有用。 有可能你的网络中断了,但你又希望将你的提交传给你的合作者们。 可能你不在办公网中并且出于安全考虑没有给你接入内网的权限。 可能你的无线、有线网卡坏掉了。 可能你现在没有共享服务器的权限,你又希望通过邮件将更新发送给别人, 却不希望通过 format-patch 的方式传输 40 个提交。这些情况下 git bundle 就会很有用。 bundle 命令会将 git push 命令所传输的所有内容打包成一个二进制文件, 你原创 2021-09-25 00:14:17 · 594 阅读 · 0 评论 -
git 知:调试
文章目录文件标注二分查找参考除了主要作为版本控制工具外,Git 也提供了几个命令来辅助你调试你的项目源码中的问题。 由于 Git 被设计成适用于几乎所有类型的内容,这些工具也相当通用,但它们往往可以在出现问题时帮助你找到 bug 或者原因。文件标注如果你在追踪代码中的一个 bug,并且想知道是什么时候以及为何会引入,文件标注通常是最好用的工具。 它能显示任何文件中每行最后一次修改的提交记录。 所以,如果你在代码中看到一个有 bug 的方法,你可以使用 git blame 标注这个文件,查看哪一次提交引原创 2021-09-25 00:13:26 · 85 阅读 · 0 评论 -
git 知:rerere
文章目录参考git rerere 功能是一个隐藏的功能。 正如它的名字“重用记录的解决方案(reuse recorded resolution)”所示,它允许你让 Git 记住解决一个块冲突的方法, 这样在下一次看到相同冲突时,Git 可以为你自动地解决它。有几种情形下这个功能会非常有用。 在文档中提到的一个例子是想要保证一个长期分支会干净地合并,但是又不想要一串中间的合并提交弄乱你的提交历史。 将 rerere 功能开启后,你可以试着偶尔合并,解决冲突,然后退出合并。 如果你持续这样做,那么最终的合并原创 2021-09-24 00:43:50 · 437 阅读 · 0 评论 -
git 知:高级合并
文章目录合并冲突中断一次合并忽略空白手动文件再合并检出冲突合并日志组合式差异格式撤消合并修复引用还原提交其他类型的合并我们的或他们的偏好子树合并参考在 Git 中合并是相当容易的。 因为 Git 使多次合并另一个分支变得很容易,这意味着你可以有一个始终保持最新的长期分支, 经常解决小的冲突,比在一系列提交后解决一个巨大的冲突要好。然而,有时也会有棘手的冲突。 不像其他的版本控制系统,Git 并不会尝试过于聪明的合并冲突解决方案。 Git 的哲学是聪明地决定无歧义的合并方案,但是如果有冲突,它不会尝试智能原创 2021-09-24 00:42:36 · 321 阅读 · 0 评论 -
git 知:重置
文章目录三棵树HEAD索引工作目录工作流程重置的作用第 1 步:移动 HEAD第 2 步:更新索引(--mixed)第 3 步:更新工作目录(--hard)回顾通过路径来重置压缩检出不带路径带路径总结参考在继续了解更专业的工具前,我们先探讨一下 Git 的 reset 和 checkout 命令。 在初遇的 Git 命令中,这两个是最让人困惑的。 它们能做很多事情,所以看起来我们很难真正地理解并恰当地运用它们。 针对这一点,我们先来做一个简单的比喻。三棵树理解 reset 和 checkout 的最简原创 2021-09-24 00:41:27 · 512 阅读 · 0 评论 -
git 知:重写历史
文章目录修改最后一次提交修改多个提交信息重新排序提交压缩提交拆分提交核武器级选项:filter-branch从每一个提交中移除一个文件使一个子目录做为新的根目录全局修改邮箱地址参考许多时候,在使用 Git 时,你可能想要修订提交历史。 Git 很棒的一点是它允许你在最后时刻做决定。 你可以在将暂存区内容提交前决定哪些文件进入提交,可以通过 git stash 来决定不与某些内容工作, 也可以重写已经发生的提交就像它们以另一种方式发生的一样。 这可能涉及改变提交的顺序,改变提交中的信息或修改文件,将提交压缩原创 2021-09-24 00:40:30 · 131 阅读 · 0 评论 -
git 知:SSH公钥
文章目录参考许多 Git 服务器都使用 SSH 公钥进行认证。 为了向 Git 服务器提供 SSH 公钥,如果某系统用户尚未拥有密钥,必须事先为其生成一份。 这个过程在所有操作系统上都是相似的。 首先,你需要确认自己是否已经拥有密钥。 默认情况下,用户的 SSH 密钥存储在其 ~/.ssh 目录下。 进入该目录并列出其中内容,你便可以快速确认自己是否已拥有密钥:$ cd ~/.ssh$ lsauthorized_keys2 id_dsa known_hostsconfig原创 2021-09-24 00:39:34 · 453 阅读 · 0 评论 -
git 知:搜索
文章目录Git GrepGit 日志搜索行日志搜索参考无论仓库里的代码量有多少,你经常需要查找一个函数是在哪里调用或者定义的,或者显示一个方法的变更历史。 Git 提供了两个有用的工具来快速地从它的数据库中浏览代码和提交。 我们来简单的看一下。Git GrepGit 提供了一个 grep 命令,你可以很方便地从提交历史、工作目录、甚至索引中查找一个字符串或者正则表达式。 我们用 Git 本身源代码的查找作为例子。默认情况下 git grep 会查找你工作目录的文件。 第一种变体是,你可以传递 -n原创 2021-09-24 00:38:17 · 295 阅读 · 0 评论 -
git 知:贮藏与清理
文章目录贮藏工作贮藏的创意性使用从贮藏创建一个分支清理工作目录参考有时,当你在项目的一部分上已经工作一段时间后,所有东西都进入了混乱的状态, 而这时你想要切换到另一个分支做一点别的事情。 问题是,你不想仅仅因为过会儿回到这一点而为做了一半的工作创建一次提交。 针对这个问题的答案是 git stash 命令。贮藏(stash)会处理工作目录的脏的状态——即跟踪文件的修改与暂存的改动——然后将未完成的修改保存到一个栈上, 而你可以在任何时候重新应用这些改动(甚至在不同的分支上)。Note迁移到 gi原创 2021-09-24 00:36:37 · 885 阅读 · 0 评论 -
git 知:交互式暂存
文章目录暂存与取消暂存文件暂存补丁参考本节中的几个交互式 Git 命令可以帮助你将文件的特定部分组合成提交。 当你在修改了大量文件后,希望这些改动能拆分为若干提交而不是混杂在一起成为一个提交时,这几个工具会非常有用。 通过这种方式,可以确保提交是逻辑上独立的变更集,同时也会使其他开发者在与你工作时很容易地审核。 如果运行 git add 时使用 -i 或者 --interactive 选项,Git 将会进入一个交互式终端模式,显示类似下面的东西:$ git add -i stage原创 2021-09-24 00:35:29 · 116 阅读 · 0 评论 -
git 知:选择修订版本
文章目录单个修订版本简短的 SHA-1分支引用引用日志祖先引用提交区间双点多点三点参考Git 能够以多种方式来指定单个提交、一组提交、或者一定范围内的提交。 了解它们并不是必需的,但是了解一下总没坏处。单个修订版本你可以通过任意一个提交的 40 个字符的完整 SHA-1 散列值来指定它, 不过还有很多更人性化的方式来做同样的事情。本节将会介绍获取单个提交的多种方法。简短的 SHA-1Git 十分智能,你只需要提供 SHA-1 的前几个字符就可以获得对应的那次提交, 当然你提供的 SHA-1 字符数原创 2021-09-24 00:33:59 · 119 阅读 · 0 评论 -
git 知:变基
文章目录变基的基本操作更有趣的变基例子变基的风险用变基解决变基变基 vs. 合并更多参考在 Git 中整合来自不同分支的修改主要有两种方法:merge 以及 rebase。 在本节中我们将学习什么是“变基”,怎样使用“变基”,并将展示该操作的惊艳之处,以及指出在何种情况下你应避免使用它。变基的基本操作请回顾之前在 分支的合并 中的一个例子,你会看到开发任务分叉到两个不同分支,又各自提交了更新。图 35. 分叉的提交历史之前介绍过,整合分支最容易的方法是 merge 命令。 它会把两个分支的最新快原创 2021-09-24 00:25:15 · 998 阅读 · 1 评论 -
git 知:分支
文章目录分支简介几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线。 在很多版本控制系统中,这是一个略微低效的过程——常常需要完全创建一个源代码目录的副本。对于大项目来说,这样的过程会耗费很多时间。有人把 Git 的分支模型称为它的“必杀技特性”,也正因为这一特性,使得 Git 从众多版本控制系统中脱颖而出。 为何 Git 的分支模型如此出众呢? Git 处理分支的方式可谓是难以置信的轻量,创建新分支这一操作几乎能在瞬间完成,并且在不同分支原创 2021-09-22 23:21:36 · 348 阅读 · 0 评论 -
git 知:简介
文章目录版本控制本地版本控制系统集中化的版本控制系统分布式版本控制系统Git 简史Git 是什么直接记录快照,而非差异比较近乎所有操作都是本地执行Git 保证完整性Git 一般只添加数据三种状态Git 安装在 Linux 上安装在 macOS 上安装在 Windows 上安装从源代码安装获取帮助参考版本控制什么是“版本控制”?我为什么要关心它呢? 版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。 在本书所展示的例子中,我们对保存着软件源代码的文件作版本控制,但实际上,你可以原创 2021-09-21 16:08:08 · 134 阅读 · 0 评论 -
git 知:基础
包括:仓库,记录每次更新到仓库,查看提交历史,撤销操作,远程仓库使用,标签原创 2021-09-21 23:21:55 · 182 阅读 · 0 评论 -
git 知:配置
文章目录配置文件配置用户信息 user.xxx配置文本编辑器 core.editor配置别名 alias.xx配置提交模板 commit.template配置分页器 core.pager配置忽略文件 core.excludesfile格式化与多余的空白字符core.autocrlfcore.whitespace检查配置信息参考配置文件Git 自带一个 git config 的工具来帮助设置控制 Git 外观和行为的配置变量。 这些变量存储在三个不同的位置:/etc/gitconfig 文件: 包含系原创 2021-09-20 22:59:21 · 555 阅读 · 1 评论