初识Git:开启版本控制之旅

一、基本介绍

Git是一种分布式版本控制系统,广泛用于管理和追踪软件开发项目的代码变更。它是由Linus Torvalds在2005年创建的,旨在解决Linux内核开发中遇到的问题。

版本控制系统的主要目标是跟踪文件的变化,记录每个版本的修改,并帮助团队协作开发。Git通过在本地保存完整的版本历史记录,并支持多个远程仓库之间的同步,使团队成员能够独立工作,并方便地分享和合并代码。

关于Git还有一段小故事,在早期还没有Git的时候,Linux源码管理是使用商业软件BitKeeper,但BitKeeper对开源社区使用做了严格的限制,其中有一条是不允许反编译BitKeeper,但有一个为OSDL(Open Source Development Labs)工作的开发者(Andrew Tridgell,samba和rsync的作者)公然高调违反,进行反编译。导致BitKeeper撤销了对开源社区的授权。失去了BitKeeper源代码管理工具,Linux内核代码维护比较麻烦,不可能像早期那种通过邮件互发Patch的方式进行维护,Linux作者Linus花费数月的时间开发出来了第一个代码版本控制工具Git,并积极测试和改进,其中Git也吸收了一些BitKeeper的设计,如分布式设计、提交、多树(“分支”)等等。从Linux-2.6.12-rc2开始,Linux内核正式转移到了git上托管。至今,Git已经成为最流行的分布式版本控制系统之一,并且在各个领域的软件开发中得到了广泛应用。

二、常见命令

2.1 提交与修改

Git 的工作就是创建和保存你的项目的快照及与之后的快照进行对比。下表列出了有关创建与提交你的项目的快照的命令:

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

2.2 提交日志

命令 说明
git log 查看历史提交记录,它会按照提交时间的倒序显示提交的详细信息,包括提交哈希值、作者、提交日期、提交信息等。
git blame 以列表形式查看指定文件的历史修改记录

2.3 远程操作

命令 说明
git remote 远程仓库操作,例如 git remote -v:显示详细信息,包括远程仓库的URL。git remote add <remote_name> <remote_url>:添加一个新的远程仓库,指定远程仓库的名称和URL
git fetch 从远程获取代码库,但并不自动合并或修改本地分支。它会将远程分支的引用复制到本地仓库中,使你可以在本地查看远程仓库的更新情况。
git pull 下载远程代码并合并
git push 上传远程代码并合并

2.4 标签管理

Git的标签是版本库的快照,其实它就是指向某个commit的指针(跟分支的主要区别是分支的指向可以移动,分支的指向会随着新的提交而变动,标签的指向不能移动)

命令 说明
git  tag 用于在Git仓库中创建、列出或删除标签(tag)。例如创建一个轻量级标签(不包含额外的信息):git tag <tag_name>,删除本地标签:git tag -d <tag_name>等等

三、核心组件

3.1  概念

在Git中,代码仓库有三个重要的组件:工作区(Working Directory)、暂存区(Staging Area)和版本库(Repository)。

  • 工作区:就是在电脑里能看到的目录。
  • 暂存区:英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
  • 版本库:工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。

3.2 详细介绍

初识Git:开启版本控制之旅

图中左侧为工作区,右侧为版本库。在版本库中标记为 “index” 的区域是暂存区(stage/index),标记为 “master” 的是 master 分支所代表的目录树。

图中的 objects 标识的区域为 Git 的对象库,实际位于 “.git/objects” 目录下,里面包含了创建的各种对象及内容。

当把文件往Git版本库里添加的时候,是分两步执行的:第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;暂存区的目录被更新,同时工作区新增的文件内容被写入到对象库中的一个新的对象中,而该对象的ID被记录在暂存区的文件索引中。

第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。暂存区的目录树写到版本库中。

四、总结

学习Git时,有以下几个核心概念需要理解:

  1. 仓库(Repository):Git用于存储代码和版本历史的地方。它可以是本地仓库(Local Repository)或远程仓库(Remote Repository)。
  2. 提交(Commit):将代码更改保存到Git仓库中的操作。每个提交都有一个唯一的标识符,可以用来查看和回溯版本历史。
  3. 分支(Branch):用于在不同的开发线上进行并行开发和管理不同的功能或版本。通过创建、切换和合并分支,可以保持代码的分离和整合。
  4. 合并(Merge):将一个分支的更改合并到另一个分支中。这使得不同分支上的代码更改得以合并,保证了团队成员之间的协作和代码的一致性。
  5. 远程仓库(Remote Repository):位于网络上的仓库,用于多人协作和代码共享。可以与远程仓库进行同步和交互,推送本地更改或拉取远程更新。
  6. 标签(Tag):用于标记特定的提交版本,通常用于表示发布版本或重要的里程碑。标签可用于快速定位特定版本和发布。

通过掌握这些概念,可以更好地理解Git的工作原理和使用方式。了解这些基础知识后,练习使用常用的Git命令,如提交、切换分支、合并代码等,可以更加熟练地使用Git进行版本控制和团队协作。


原文始发于微信公众号(洋洋自语):初识Git:开启版本控制之旅

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/273092.html

(0)
明月予我的头像明月予我bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!