哈喽,大家好,我是指北君
。
作为程序员,对版本控制工具肯定不陌生。对很多资深程序员来说,CVS 和 SVN 曾经占据着统治地位。随着互联网飞速发展,为了更好地适应互联网时代软件版本管理的需要,采用分布式版本库的 Git 应运而生,并迅速占领各大互联网阵地,独占鳌头。
关于Git
Git 是 Linus Torvalds (你没看错,就是 Linux 创始人) 为了帮助管理 Linux 内核开发而开发的一个免费和开源的版本控制软件,它采用了分布式版本库的方式,不必服务器端软件支持,旨在快速高效地处理从小型项目到大型项目的所有项目。
Git 易于学习,占用空间小,性能快如闪电。它优于 SCM 工具,如 Subversion、CVS、Perforce 和 ClearCase,具有廉价的本地分支、方便的暂存区域和多个工作流等功能。
Git 特性
分支和合并
Git 允许并鼓励拥有多个可以完全相互独立的本地分支。这些开发线的创建、合并和删除只需几秒钟。可以执行以下操作:
- 无摩擦上下文切换:创建一个分支来尝试一个想法,提交几次,切换回你分支的地方,应用补丁,切换回你正在试验的地方,然后合并它。
- 基于角色的代码行:拥有一个始终只包含用于生产的分支,另一个将工作合并到其中以进行测试,以及几个较小的分支用于日常工作。
- 基于特征的工作流程:为您正在处理的每个新功能创建新分支,以便您可以在它们之间无缝地来回切换,然后在该功能合并到您的主线时删除每个分支。
小而快
Git 速度很快。使用 Git,几乎所有操作都在本地执行,在需要不断与某处服务器通信的集中式系统上,它具有巨大的速度优势。
Git 是为在 Linux 内核上工作而构建的,这意味着它从一开始就必须有效地处理大型存储库。
Git 是用C编写的,减少了与高级语言相关的运行时开销。速度和性能从一开始就是 Git 的主要设计目标。
分布式
Git 最佳特性之一就是它是分布式的。这意味着无需对源代码的当前提示进行“签出”,而是对整个存储库进行“克隆”。
数据保障
Git 使用的数据模型可确保项目每一部分的加密完整性。
每个文件和提交都会在签出时通过其校验和进行校验和检索。除了你输入的确切位之外,不可能从 Git 中得到任何东西。
大多数集中式版本控制系统默认不提供这种完整性。
暂存区
Git 有一个叫做“暂存区”或“索引”的内容。这是一个中间区域,可以在完成提交之前对提交进行格式化和审查。
Git 可以快速暂存一些文件并提交它们,而无需提交工作目录中的所有其他修改文件,也不必在提交期间在命令行中列出它们。
安装 Git
- 在 Linux 上安装
如果你想通过二进制安装程序在 Linux 上安装基本的 Git 工具,你通常可以通过你的发行版附带的包管理工具来完成。如果您使用 Fedora(或任何密切相关的基于 RPM 的发行版,例如 RHEL 或 CentOS),您可以使用dnf:
$ sudo dnf install git-all
如果使用的是基于 Debian 的发行版,例如 Ubuntu,请尝试apt:
$ sudo apt install git-all
- 在 macOS 上安装
在 Mac 上安装 Git 有多种方法。最简单的可能是安装 Xcode 命令行工具。在 Mavericks (10.9) 或更高版本上,您只需第一次尝试git从终端运行即可做到这一点。
$ git --version
如果还没有安装,会提示安装它。
- 在 Windows 上安装
有几种方法可以在 Windows 上安装 Git。官方的构建版本可在 Git 网站上下载——转到git-scm.com/download/wi…
请注意,这是一个名为 Git for Windows 的项目,它与 Git 本身是分开的
常用操作 & 命令
- 创建新仓库
创建新文件夹,打开,然后执行如下命令:
git init
- 检出仓库
执行如下命令以创建一个本地仓库的克隆版本:
git clone /path/to/repository
如果是远端服务器上的仓库,命令会是这样:
git clone username@host:/path/to/repository
- 添加和提交
添加更改(把它们添加到暂存区),使用如下命令:
git add <filename>
git add *
实际提交改动,使用如下命令:
git commit -m "代码提交信息"
至此,改动已经提交到 HEAD,但没到远端仓库。
- 推送改动
确定改动已经在本地仓库,执行如下命令以将这些改动提交到远端仓库:
git push origin master
可以把 master 换成你想要推送的任何分支。
- 分支
创建分支,并切换过去:
git checkout -b feature_x
切换回主分支:
git checkout master
再把新建的分支删掉:
git branch -d feature_x
- 更新与合并
更新本地仓库至最新改动,执行:
git pull
合并其他分支到当前分支(例如 master),执行:
git merge <branch>
当更新和合并出现冲突(conflicts)时,需要修改这些文件来手动合并这些冲突(conflicts)。改完之后,执行如下命令以将它们标记为合并成功:
git add <filename>
在合并改动之前,你可以使用如下命令预览差异:
git diff <source_branch> <target_branch>
指北君有话说
Git作为开源的版本控制软件,能占据统治地位,其本身契合互联网浪潮下版本管理诉求的设计理念功不可没。对应程序员们来说,无论是个人使用,还是公司内应用,都少不了 Git。
关注公众号 [程序员了不起]回复[eee113] 即可获取navicat绿版。