文集文档索引

版本控制工具:Git 基础与进阶


  • 文集信息
  • 目录大纲
  • 最新文档
  • 知识宇宙

文集详情

文集导读

版本控制工具:Git 基础与进阶 版本控制工具:Git 基础与进阶 版本控制是软件开发不可或缺的核心实践。它记录文件内容的变化,允许回溯历史、协作开发、解决冲突。Git 是目前最流行、功能最强大的分布式版本控制系统 DVCS。 Git 基础概念 仓库 Repository: 存储项目的全部文件、历史记录和元数据。分为本地仓库和远程仓库。 工作目录 Working Directory: 项目当前可见的文件状态,即从仓库中检出的文件。 暂存区 Staging Area 或 Index: 一个中间区域,用于暂存你想要在下次提交中包含的更改。 提交 Commit: 记录项目某个特定时间点的快照。每个提交都有一个唯一的 SHA-1 哈希值作为标识符,包含作者、日期、提交信息以及指向前一个提交的指针。 分支 Branch: 指向某次提交的可变指针。默认主分支通常是 或 。分支是 Git 并行开发的关键。 HEAD: 指向当前所在分支的指针,通常也就是指向当前分支的最新提交。 Git 基本工作流程 基本的 Git 流程包括:在工作目录修改文件,将修改添加到暂存区,然后将暂存区的修改提交到本地仓库。 基本命令 :在当前目录初始化一个新的 Git 仓库。 :克隆远程仓库到本地。 :查看工作目录和暂存区的状态。 或 :将文件或所有修改添加到暂存区。 :将暂存区的更改提交到本地仓库。 :查看提交历史。

版本控制工具:Git 基础与进阶

版本控制工具:Git 基础与进阶

版本控制是软件开发不可或缺的核心实践。它记录文件内容的变化,允许回溯历史、协作开发、解决冲突。Git 是目前最流行、功能最强大的分布式版本控制系统 DVCS。

Git 基础概念

  1. 仓库 Repository: 存储项目的全部文件、历史记录和元数据。分为本地仓库和远程仓库。

  2. 工作目录 Working Directory: 项目当前可见的文件状态,即从仓库中检出的文件。

  3. 暂存区 Staging Area 或 Index: 一个中间区域,用于暂存你想要在下次提交中包含的更改。

  4. 提交 Commit: 记录项目某个特定时间点的快照。每个提交都有一个唯一的 SHA-1 哈希值作为标识符,包含作者、日期、提交信息以及指向前一个提交的指针。

  5. 分支 Branch: 指向某次提交的可变指针。默认主分支通常是 mainmaster。分支是 Git 并行开发的关键。

  6. HEAD: 指向当前所在分支的指针,通常也就是指向当前分支的最新提交。

Git 基本工作流程

基本的 Git 流程包括:在工作目录修改文件,将修改添加到暂存区,然后将暂存区的修改提交到本地仓库。

基本命令

  • git init:在当前目录初始化一个新的 Git 仓库。

  • git clone <url>:克隆远程仓库到本地。

  • git status:查看工作目录和暂存区的状态。

  • git add <文件名>git add .:将文件或所有修改添加到暂存区。

  • git commit -m "提交信息":将暂存区的更改提交到本地仓库。

  • git log:查看提交历史。

  • git diff:查看工作目录与暂存区,或暂存区与最新提交之间的差异。

  • git remote add origin <url>:关联远程仓库。

  • git push origin <分支名>:将本地分支推送到远程仓库。

  • git fetch origin:从远程仓库获取最新提交,但不合并。

  • git pull origin <分支名>:从远程仓库获取最新提交并合并到当前分支(相当于 git fetch 后跟 git merge)。

Git 分支管理

分支是 Git 的核心特性之一,它允许开发者在不影响主线开发的情况下进行实验或开发新功能。

  • git branch:列出所有本地分支。

  • git branch <分支名>:创建一个新分支。

  • git switch <分支名> (或 git checkout <分支名>):切换到指定分支。

  • git switch -c <新分支名> (或 git checkout -b <新分支名>):创建并切换到新分支。

  • git branch -d <分支名>:删除指定分支(需先切换到其他分支)。

  • git merge <分支名>:将指定分支的更改合并到当前分支。

合并 Merge

当你在一个分支上完成工作并希望将其集成到另一个分支时,使用 git merge

  • 快进合并 Fast-forward Merge: 如果目标分支自创建你的分支以来没有新的提交,Git 会直接将目标分支的指针移动到你的分支的最新提交,速度快且不会产生新的合并提交。

  • 三方合并 Three-way Merge: 如果目标分支在你创建分支后有了新的提交,Git 会找到两个分支的共同祖先,并将三个版本(共同祖先、当前分支最新提交、待合并分支最新提交)进行合并,生成一个新的合并提交。

合并冲突 Merge Conflicts

当 Git 尝试合并两个分支时,如果同一个文件的同一部分在两个分支上都被修改,Git 无法自动决定使用哪个修改,就会发生合并冲突。你需要手动编辑文件,解决冲突标记,然后 git addgit commit 来完成合并。

Git 进阶主题

  1. Rebase 重定基: git rebase <目标分支> 将当前分支的修改“移动”到目标分支的最新提交之后。它会重写提交历史,使提交看起来是基于目标分支的最新状态进行的,形成更线性的历史记录。与 Merge 相比,Rebase 使历史更干净,但会改变现有提交的 SHA-1 值,不应用于已推送到公共仓库的提交。

  2. Stashing 暂存: git stash 临时保存当前工作目录和暂存区的更改,以便切换到其他任务,而无需提交一个不完整的提交。git stash popgit stash apply 恢复暂存的更改。

  3. Tagging 标签: git tag <标签名> 给历史中的某个特定提交打上永久性标签,常用于标记发布版本。标签可以是轻量标签(仅一个指向提交的指针)或附注标签(包含额外信息和签名)。

  4. Cherry-pick 摘樱桃: git cherry-pick <提交哈希> 将指定的单个提交应用到当前分支。适用于只需要从另一个分支引入少量特定提交的情况。

  5. Git Internals 内部原理: Git 的核心是内容寻址文件系统。.git 目录包含了仓库的所有历史和元数据。对象 Objects 是 Git 存储数据的基本单元,包括:

    • Blob:存储文件内容的快照。

    • Tree:存储目录结构,包含文件名和指向 Blob 或其他 Tree 的指针。

    • Commit:存储提交元数据(作者、日期、信息)和指向一个 Tree 对象(代表该提交时的目录状态)以及父提交的指针。

    • Tag:指向提交或其他 Git 对象的引用。

    Index 暂存区实际上是一个文件,记录了下次提交时工作目录树的预定状态。

  6. Workflow Strategies 工作流策略: 基于 Git 提供灵活的分支和合并能力,演化出了多种协作模式,如 Gitflow、GitHub Flow、GitLab Flow 等,它们规定了如何使用分支进行功能开发、发布管理和热修复。

掌握 Git 基础是高效开发的前提,理解并运用进阶特性可以更好地管理复杂项目和协作流程。分布式特性赋予了 Git 强大的灵活性和离线操作能力,使其成为现代软件开发不可或缺的工具。

目录大纲

    最新文档

    知识宇宙

    正在加载知识图谱...


    转发