<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Git on</title><link>https://dengwu.wang/cn/docs/git/</link><description>Recent content in Git on</description><generator>Hugo -- gohugo.io</generator><lastBuildDate>Tue, 04 Apr 2023 00:00:00 +0000</lastBuildDate><atom:link href="https://dengwu.wang/cn/docs/git/index.xml" rel="self" type="application/rss+xml"/><item><title>Git起步</title><link>https://dengwu.wang/cn/docs/git/start/</link><pubDate>Sun, 09 Apr 2023 00:00:00 +0000</pubDate><guid>https://dengwu.wang/cn/docs/git/start/</guid><description>版本控制作用 # 追踪变更 回溯版本 分享合作 当你不小心把代码搞乱了的时候，可以回溯到之前的任意提交版本，也可以追踪你的每一次提交，可以对比差异，可以分享和合作。
Git简史 # 同生活中的许多伟大事物一样，Git诞生于一个极富纷争大举创新的年代。
Linux内核开源项目有着为数众多的参与者，绝大多数的Linux内核维护工作都花在了提交补丁和保存归档的繁琐事务上（1991－2002年间）。
到2002年，整个项目组开始启用一个专有的分布式版本控制系统BitKeeper来管理和维护代码。
到了2005年，开发BitKeeper的商业公司同Linux内核开源社区的合作关系结束，他们收回了Linux内核社区免费使用BitKeeper的权力，这就迫使Linux开源社区（特别是Linux的缔造者Linus Torvalds）基于使用BitKeeper时的经验教训，开发出自己的版本系统。
他们对新的系统制订了若干目标：
速度
简单的设计
对非线性开发模式的强力支持（允许成千上万个并行开发的分支）
完全分布式
有能力高效管理类似Linux内核一样的超大规模项目（速度和数据量）
自诞生于2005年以来，Git日臻成熟完善，在高度易用的同时，仍然保留着初期设定的目标。
它的速度飞快，极其适合管理大项目，有着令人难以置信的非线性分支管理系统。
和SVN的差异 # 直接记录快照，而非差异比较 如果你使用过之前的集中式版本管理系统SVN，那么你就能体会到Git的便捷和强大。
Git和SVN的主要差别在于Git对待数据的方式。从概念上来说，其它大部分系统以文件变更列表的方式存储信息，这类系统将它们存储的信息看作是一组基本文件和每个文件随时间逐步累积的差异。
基于差异的版本控制，存储每个文件与初始版本的差异. Git不按照以上方式对待或保存数据，Git更像是把数据看作是对小型文件系统的一系列快照。
在Git中，每当你提交更新或保存项目状态时，它基本上就会对当时的全部文件创建一个快照并保存这个快照的索引。
为了效率，如果文件没有修改，Git不再重新存储该文件，而是只保留一个链接指向之前存储的文件。
基于快照流的版本控制，存储项目随时间改变的快照. Git保证完整性 # Git中所有的数据在存储前都计算校验和，然后以校验和来引用，这个功能建构在Git底层，是构成Git哲学不可或缺的部分。
这意味着不可能在Git不知情时更改任何文件内容或目录内容，若你在传送过程中丢失信息或损坏文件，Git就能发现。
Git用以计算校验和的算法是SHA-1散列，这是一个由40个十六进制字符（0-9和a-f）组成的字符串，基于Git中文件的内容或目录结构计算出来。
SHA-1哈希看起来是这样：
24b9da6552252987aa493b52f8696cd6d3b00373 Git中使用这种哈希值的情况很多，你将经常看到这种哈希值。 实际上，Git数据库中保存的信息都是以文件内容的哈希值来索引，而不是文件名。
三种状态 # Git有三种状态，你的文件可能处于其中之一：
已提交(committed) 已提交表示数据已经安全地保存在本地数据库中。 已修改(modified) 已修改表示修改了文件，但还没保存到数据库中。 已暂存(staged) 已暂存表示对一个已修改文件的当前版本做了标记，使之包含在下次提交的快照中。 这会让我们的Git项目拥有三个阶段：工作区、暂存区以及Git目录。
工作区、暂存区以及Git仓库. 工作区是对项目的某个版本独立提取出来的内容，这些从Git仓库的压缩数据库中提取出来的文件，放在磁盘上供你使用或修改。
暂存区是一个文件，保存了下次将要提交的文件列表信息，一般在Git仓库目录中，按照Git的术语叫做“索引”，不过一般说法还是叫“暂存区”。
Git仓库目录是Git用来保存项目的元数据和对象数据库的地方。 这是Git中最重要的部分，从其它计算机克隆仓库时，复制的就是这里的数据。
基本的Git工作流程如下：
在工作区中修改文件。
将你想要下次提交的更改选择性地暂存，这样只会将更改的部分添加到暂存区。
提交更新，找到暂存区的文件，将快照永久性存储到Git目录。
如果Git目录中保存着特定版本的文件，就属于已提交状态。
如果文件已修改并放入暂存区，就属于已暂存状态。
如果自上次检出后，作了修改但还没有放到暂存区域，就是已修改状态。
Git的配置 # 配置文件位置和优先级 # Git自带一个git config工具来帮助设置控制Git外观和行为的配置变量。
这些变量存储在三个不同的位置：
/etc/gitconfig文件: 包含系统上每一个用户及他们仓库的通用配置。如果在执行git config时带上--system选项，那么它就会读写该文件中的配置变量。 ~/.</description></item></channel></rss>