标签归档:git

Git 源码禁止使用 C 标准库中容易被错用的函数

Git 项目的源码禁止开发者使用 C 标准库中的某些函数,原因是这些函数太容易被误用,就算使用得当也很容易出问题。因此 Git 的源码增加了一个 banned.h 的头函数,一旦你使用了这些被禁用的函数,将在编译时报错。

Git 2.22:保留拓扑和交互式 Rebase

在Git 发布的最新版本 Git 2.22中,最重要的新功能是,它支持”变基“(rebase)复杂的分支拓扑,例如,对于那些合并后不会扁平化分支拓扑的合并,也允许使用交互式的“变基”功能。

Git 2.19 对Diff、Branch和Grep等做了改进

这很有用,这样git diff可以在其输出中展示新文件的完整内容。但是之前,diff中的文件路径没有被标记成新的。在一份相关说明提到,apply命令也改进了其对intent-to-add选项的处理。

git的基本架构欣赏

架构设计的代码或者文档,都是以有述无,写的是你看得见的代码,心思都在没有写的代码身上。如果你把心思都放在写的那些代码上,那架构设计就变成详细设计了。架构设计无法学样子,问题就在这个地方。

Git 协议版本 2 宣布推出:Git wire protocol

今天我们宣布推出Git协议版本2,这是Git的线路协议(wire protocol)的一次重大更新。该协议明确规定了在客户端与服务器之间如何传输克隆(clone)、拉取(fetch)和推送(push)。这个最新版摈弃了Git协议中最低效的部分之一,消除了可扩展性瓶颈,为将来线路协议方面的更多改进打通了道路。

春秋战国(Git)与大秦王朝(Svn)的爱恨情仇

关于Git的概念相信很多人都有所了解,但又不太了解。单从技术的角度去分析对于理解能力不太强的同学显得苍白无力。于是乎我试着用举例子的方式去还原繁杂的技术概念。

找了一天找不到 Bug ? 试试 Git 的二分法吧!

你一定遇到过,一个很久没修改过的功能,莫名其妙的出现了问题?肉眼查代码、屡逻辑完全找不到问题点?前两天还好好的功能,怎么这个今天就不行了?这两天改动了这么多代码,到底是那一次改动引发的 Bug?这样非崩溃的 Bug,有时候想要排查出问题,并不是一件容易的事情。我想,这个时候你会需要 git bisect !

Git的4个阶段的撤销更改

下面所有讨论,我们都假设只使用一个分支,也就是主分支 master 的情况,虽然这种作法并不符合 git 规范,但是现实情况中绝大部分用户是直接在 master 分支上进行工作的,所以在这里我们不去引入更加复杂的各种分支的情况,也不涉及标签 tag 的操作,只讲在最简单的主分支上如何回退。

关于Git与SVN

历史就是这么偶然,如果不是当年BitMover公司威胁Linux社区,可能现在我们就没有免费而超级好用的Git了。Linus一直痛恨的CVS及SVN都是集中式的版本控制系统,而Git是分布式版本控制系统,集中式和分布式版本控制系统有什么区别呢?

看完这篇文章才对GIT有了大彻大悟的认识

。我们不要把git看得那么神秘,git的核心就是创建备份和恢复备份,但是衍生出一堆的新概念,这些抽象概念可以帮助我们快速的学会 git,但是要很好的使用git,我们还需要GIT的一些底层原理。本文章是从文件的层面出发来重新理解GIT的工作原理和GIT命令的具体实现。

如何给git仓库瘦身

不管是代码合并,分支提供给我们的并发,但我们也往往忽略了每次提交之后在我们本地项目根目录 下.git文件夹里面的存储变化。我遇到的git“臃肿”问题就是因为在提交的时候把较大文本加入版本控制,在其他人拉取更新反推远程分支的时候,每一次 都会加剧.git下面的objects的文件夹大小

Git的核心概念

Git 是目前世界上最优秀的分布式版本控制系统。版本控制系统是能够随着时间的推进记录一系列文件的变化以便于你以后想要的退回到某个版本的系统。版本控制系统分为三大类:本地版本控制系统,集中式版本控制系统和分布式版本控制系统

Oh! 让人抓狂的git!

Git很难:因为搞砸了很容易,但是找到如何修复错误的方法缺很难。Git官方的文档,存在“先有鸡还是先有蛋”的问题——除非你知道解决问题的方法的特定名字,否则很难查询到解决方案并顺利的解决自己的问题。

如何构建你自己的 Git 服务器

现在我们开始学习如何构建一个Git服务器,如何编写自定义的Git钩子(hook)来针对某些事件(比如,通知事件)触发特定的动作以及如何将你的代码发布到网站上。