2022年3月19日:有关版本控制与 Git 结合使用的简介--Git介绍

了解什么是源代码管理,并简要了解 Git - 世界上最常用的版本控制系统。

什么是版本控制

版本控制系统 (VCS) 是跟踪文件集合更改的程序或程序集。 VCS 的一个目标是轻松撤回至单个文件或整个项目的较早版本。 另一个目标是支持多个团队成员同时处理同一个项目(甚至是相同的文件),而不会影响各自的工作。

VCS 的另一个名称是软件配置管理 (SCM) 系统。 这两个术语通常可以互换使用,实际上,Git 的官方文档位于git-scm.com。

从技术上讲,版本控制只是 SCM 中涉及的一种做法。 VCS 可用于除软件之外的项目(包括书籍和在线教程)。

你可以使用 VCS 执行以下操作:

  • 查看对项目所做的所有更改、更改时间和更改者。
  • 为每条更改添加一条消息,解释更改原因。
  • 检索整个项目或单个文件的以前版本。
  • 创建“分支”,可在其中进行试验性的更改。 通过此功能,可同时(由不同的人)处理多个不同的更改集(例如,功能或 bug 修复),而不会影响主分支。 稍后,可以将所需更改合并到主分支。
  • 将标记附加到版本 - 例如,用于标记新版本。

Git 是一种快速、通用、高度可缩放的免费开源 VCS。 它的主要作者是 Linux 的创建者 Linus Torvalds。

分布式版本控制

较早的 VCS 实例(包括 CVS,Subversion (SVN) 和 Perforce)使用集中式服务器来存储项目的历史记录。 这种集中意味着一台服务器也可能是单一故障点。

Git 是分布式的,这意味着项目的完整历史记录同时存储在客户端和服务器上。 可以在没有网络连接的情况下编辑文件、在本地签入文件,并在连接可用时与服务器同步。 如果服务器出现故障,你仍拥有该项目的本地副本。 从技术上讲,你甚至不必拥有服务器。 更改可以通过电子邮件传递或使用可移动媒体共享,但实际上没有人这样使用 Git。

Git术语

要了解 Git,必须了解相关术语。 以下是 Git 用户常用的术语的简短列表。

  • 工作树:包含正在处理的项目的嵌套目录和文件集。

  • 存储库 (repo):位于工作树的顶级的目录,Git 在其中保留了项目所有的历史记录和元数据。 存储库 (Repository) 一般称为 repo。 “空存储库”不属于工作树;它用于共享或备份。 空存储库通常是名称以 .git 结尾的目录,例如 project.git。

  • 哈希:哈希函数生成的数字,它将文件或其他对象的内容表示为固定长度的数字。 Git 使用 160 位长度的哈希。 使用哈希的一个好处是,Git 可以通过对文件内容进行哈希处理并将结果与先前的哈希进行比较,从而判断文件是否已更改。 如果文件的时间日期戳已更改,但文件哈希未更改,则 Git 知道文件内容未更改。

  • 对象:一个 Git 存储库包含四种类型的“对象”,每种对象均由 SHA-1 哈希进行唯一标识。 blob 对象包含普通文件。 “树”对象表示目录;它包含名称、哈希和权限。 “提交”对象表示工作树的特定版本。 “标记”是附加到提交的名称。

  • 提交:用作动词时,“提交”的意思是生成提交对象。 此操作的名称来自对数据库的提交。 它的意思是你正在提交所做的更改,让其他人最终也可以看到它们。

  • 分支:分支是一系列已命名的关联提交。 分支上的最新提交称为“头”。 初始化存储库时创建的默认分支称为 main,在 Git 中通常名为 master。 当前分支的头称为“HEAD”。 分支是 Git 的一项非常有用的功能,因为通过它,开发人员可在分支中独立(或协同)工作,然后将其更改合并到默认分支中。

  • 远程库:远程库是对另一个 Git 存储库的已命名引用。 创建存储库时,Git 会创建一个名为“origin”的远程库,这是用于推送和拉取操作的默认远程库。

  • 命令、子命令和选项:Git 操作通过 git push 和 git pull 等命令执行。 git 是命令,push 或 pull 是子命令。 子命令指定需要 Git 执行的操作。 命令通常带有选项,这些选项使用连字符 (-) 或双连字符 (--)。 例如 git reset --hard

Git命令行

有一系列可用于 Git 的不同 GUI,包括 GitHub Desktop。

仅通过 GUI 查看 Git 的开发人员有时会遇到无法解决的错误消息,因此他们必须使用命令行才能解决问题。

Git和GitHub

Git 是一种分布式版本控制系统 (DVCS),多名开发人员和其他参与者可通过它共同处理同一项目。 它提供了一种方法来处理一个或多个本地分支,然后将它们推送到远程存储库。

GitHub 是将 Git 用作其核心技术的云平台。 GitHub 简化了协作处理项目的过程,提供了网站、更多命令行工具,以及可使开发人员和用户一起工作的总体流程。 GitHub 充当先前提到的“远程存储库”。

GitHub 提供的主要功能包括:

  • 问题
  • 讨论
  • 拉取请求
  • 通知
  • 标签
  • 操作
  • 前叉
  • 项目

试用Git

在创建第一个存储库之前,必须确保已安装并配置 Git。 

配置Git

在 Cloud Shell 中,要再次确认已安装 Git,请键入 git --version

git --version

应当会看到与以下示例类似的输出:

git version 2.37.3.windows.1

要配置 Git,必须定义一些全局变量:user.name 和 user.email。 这两者都是进行提交所必需的。

在 Cloud Shell 中,用以下命令设置你的名称。 将 <USER_NAME> 替换为要使用的用户名。

git config --global user.name "<USER_NAME>"

使用此命令创建 user.email 配置变量,并将 <USER_EMAIL> 替换为使用电子邮件地址:

git config --global user.email "<USER_EMAIL>"

运行以下命令以检查更改是否成功:

git config --list

确认输出包含类似以下示例的两行。 你的用户名和电子邮件地址将与示例中显示的内容不同。

user.name=User Name
user.email=user-name@contoso.com

设置Git存储库

Git 的工作方式是:检查特定文件夹内文件的更改。 我们会创建一个文件夹作为“工作树”(项目目录),并将其告知 Git,以便可以开始跟踪更改。 我们将 Git 存储库初始化到该文件夹中来告知 Git 开始跟踪更改。

首先为项目创建一个空文件夹,然后在该文件夹内初始化 Git 存储库。

创建名为“Cats”的文件夹。 此文件夹将为项目目录(也称为“工作树”)。 项目目录是存储所有与项目有关的文件的位置。 

mkdir Cats

使用 cd 命令切换到项目目录:

cd Cats

现在,初始化新存储库,并将默认分支的名称设置为 main

如果运行的是 Git 版本 2.28.0 或更高版本,请使用以下命令:

git init --initial-branch=main
git init -b main

对于 Git 的较早版本,请使用以下命令:

git init
git checkout -b main

运行初始化命令后,应当会看到与以下示例类似的输出:

Initialized empty Git repository in /home/<user>/Cats/.git/

Switched to a new branch 'main'

现在使用 git status 命令以显示工作树的状态:

git status

Git 用此输出进行响应,这表示 master 为当前分支。 (它也是唯一分支。)到目前为止,一切顺利。

On branch master

 No commits yet

 nothing to commit (create/copy files and use "git add" to track)

使用 ls 命令以显示工作树的内容:

ls -a

确认目录包含一个名为“.git”的子目录。 (将 -a 选项与 ls 结合使用非常重要,因为 Linux 通常会隐藏以句点开头的文件和目录名称。)此文件夹为 Git 存储库 - Git 用于存储工作树的元数据和历史记录的目录。

在工作树的状态发生更改时,Git 会更新元数据,以跟踪文件中的更改。

从Git获取帮助

与大多数命令行工具一样,Git 具有内置的帮助功能,可用于查找命令和关键字。

键入以下命令,获取 Git 相关的操作帮助

git --help

此命令显示以下输出:

usage: git [--version] [--help] [-C <path>] [-c name=value]
       [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
       [-p | --paginate | --no-pager] [--no-replace-objects] [--bare]
       [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
       <command> [<args>]

These are common Git commands used in various situations:

start a working area (see also: git help tutorial)
   clone      Clone a repository into a new directory
   init       Create an empty Git repository or reinitialize an existing one

work on the current change (see also: git help everyday)
   add        Add file contents to the index
   mv         Move or rename a file, a directory, or a symlink
   reset      Reset current HEAD to the specified state
   rm         Remove files from the working tree and from the index

examine the history and state (see also: git help revisions)
   bisect     Use binary search to find the commit that introduced a bug
   grep       Print lines matching a pattern
   log        Show commit logs
   show       Show various types of objects
   status     Show the working tree status

grow, mark and tweak your common history
   branch     List, create, or delete branches
   checkout   Switch branches or restore working tree files
   commit     Record changes to the repository
   diff       Show changes between commits, commit and working tree, etc
   merge      Join two or more development histories together
   rebase     Forward-port local commits to the updated upstream head
   tag        Create, list, delete or verify a tag object signed with GPG

collaborate (see also: git help workflows)
   fetch      Download objects and refs from another repository
   pull       Fetch from and integrate with another repository or a local branch
   push       Update remote refs along with associated objects

'git help -a' and 'git help -g' list available subcommands and some
concept guides. See 'git help <command>' or 'git help <concept>'
to read about a specific subcommand or concept.

基本Git命令

Git 的工作方式是记住对文件所做的更改,就像它对文件系统拍摄快照一样。

git status

首先是最常用的 Git 命令 git status

git status 显示工作树的状态。 利用它可查看 Git 当前正在跟踪哪些更改,以便决定是否指示 Git 再拍摄一个快照。

git add

git add 命令用于指示 Git 开始跟踪某些文件中的更改。

此操作的技术术语是“暂存”这些更改。 将使用 git add 来暂存更改以准备提交。 已添加但尚未提交的文件中的所有更改都存储在“暂存区域”中。

git commit

暂存要提交的某些更改后,可以通过调用 git commit 命令将工作保存到快照。

“提交”是动词也是名词。 在“提交到计划”或“将更改提交到数据库”中,“提交”的含义本质上是相同的。 作为动词,提交更改意味着将文件、目录或其他内容的副本作为新版本放置到存储库中。 作为名词,提交是一小部分数据,它为所提交的更改提供了唯一标识。 保存在提交中的数据包括作者姓名和电子邮件地址、日期、有关所执行操作(以及原因)的注释、可选数字签名和先前提交的唯一标识符。

git log

使用 git log 命令,可查看先前提交的相关信息。 每个提交都附加有一条消息(提交消息),git log 命令输出有关最新提交的信息,如其时间戳、作者和提交消息。 此命令有助于跟踪你执行的操作和已保存的更改。

git help

 利用此命令,可以轻松获取到目前为止已了解的所有命令的相关信息和其他命令信息。

可以通过键入 git <command> --help 找到这些帮助页。 例如,git commit --help 会调出一个页面,其中包含有关 git commit 命令及其使用方法的详细信息。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值