git基础掌握 | 青训营笔记

31 阅读5分钟

Git是一个分布式版本控制系统,它是由Linux的创始人Linus Torvalds在2005年开发的。Git的设计理念是为了解决一些传统版本控制系统的缺陷,如Subversion的集中式控制和CVS的性能瓶颈等。

Git的源头可以追溯到Linux内核的开发过程中。在Linux内核的开发中,有成千上万的开发者贡献代码,而这些代码又分布在不同的地方。为了更好地管理和控制这些代码,Linus Torvalds开发了Git。Git通过将代码分布在多个仓库中,使得开发者可以在本地进行代码的编辑和版本控制。这种分布式的设计理念不仅使Git具有更强的可靠性和安全性,还可以提高软件开发的效率和质量。

在Git的使用方面,它具有强大的分支管理功能和代码合并机制。分支在Git中没有任何限制,开发者可以无限制地创建和合并分支。这样可以让开发者更加自由地进行代码开发和测试。同时,Git还具有高效的代码合并机制,可以使得多个开发者同时开发同一项目时,能够有效地合并它们的代码,减少冲突和错误。

除此之外,Git还提供了许多其他有用的功能,比如代码回滚、标签管理、代码查看等等。这些功能都使得Git成为了当今最流行和实用的版本控制系统之一。

总之,Git具有分布式的思想和强大的功能,使得它成为了当前最为流行和实用的版本控制系统。作为一名软件开发者,了解和掌握Git的使用方法和思想是非常必要的。

直接记录快照,而非差异比较

Git 和其它版本控制系统(包括 Subversion 和近似工具)的主要差别在于 Git 对待数据的方式。 从概念上来说,其它大部分系统以文件变更列表的方式存储信息,这类系统(CVS、Subversion、Perforce、Bazaar 等等) 将它们存储的信息看作是一组基本文件和每个文件随时间逐步累积的差异 (它们通常称作 基于差异(delta-based) 的版本控制)

近乎所有操作都是本地执行

在 Git 中的绝大多数操作都只需要访问本地文件和资源,一般不需要来自网络上其它计算机的信息。 如果你习惯于所有操作都有网络延时开销的集中式版本控制系统,Git 在这方面会让你感到速度之神赐给了 Git 超凡的能量。 因为你在本地磁盘上就有项目的完整历史,所以大部分操作看起来瞬间完成。

Git 保证完整性

Git 中所有的数据在存储前都计算校验和,然后以校验和来引用。 这意味着不可能在 Git 不知情时更改任何文件内容或目录内容。 这个功能建构在 Git 底层,是构成 Git 哲学不可或缺的部分。 若你在传送过程中丢失信息或损坏文件,Git 就能发现。

Git 一般只添加数据

你执行的 Git 操作,几乎只往 Git 数据库中 添加 数据。 你很难使用 Git 从数据库中删除数据,也就是说 Git 几乎不会执行任何可能导致文件不可恢复的操作。 同别的 VCS 一样,未提交更新时有可能丢失或弄乱修改的内容。但是一旦你提交快照到 Git 中, 就难以再丢失数据,特别是如果你定期的推送数据库到其它仓库的话。

三种状态

现在请注意,如果你希望后面的学习更顺利,请记住下面这些关于 Git 的概念。 Git 有三种状态,你的文件可能处于其中之一: 已提交(committed)已修改(modified)已暂存(staged)

  • 已修改表示修改了文件,但还没保存到数据库中。

  • 已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。

  • 已提交表示数据已经安全地保存在本地数据库中。

这会让我们的 Git 项目拥有三个阶段:工作区、暂存区以及 Git 目录

创建仓库命令

下表列出了 git 创建仓库的命令:

命令说明
git init初始化仓库
git clone拷贝一份远程仓库,也就是下载一个项目。

提交与修改

Git 的工作就是创建和保存你的项目的快照及与之后的快照进行对比。

下表列出了有关创建与提交你的项目的快照的命令:

命令说明
git add添加文件到暂存区
git status查看仓库当前的状态,显示有变更的文件。
git diff比较文件的不同,即暂存区和工作区的差异。
git commit提交暂存区到本地仓库。
git reset回退版本。
git rm将文件从暂存区和工作区中删除。
git mv移动或重命名工作区文件。

提交日志

命令说明
git log查看历史提交记录
git blame <file>以列表形式查看指定文件的历史修改记录

远程操作

命令说明
git remote远程仓库操作
git fetch从远程获取代码库
git pull下载远程代码并合并
git push上传远程代码并合并