Git 使用(逻辑)

本文深入浅出地介绍了Git的基本操作,包括初始化、工作区与暂存区、版本库、Tags、本地分支管理、合并与远程仓库(如origin的配置与操作)。详细讲解了拉取、推送、分支跟踪与贡献流程,适合有一定Git基础的学习者参考。

Git 分布式版本控制工具

本文更适用于对于 Git 有基本认识的小伙伴,本文提供了清晰的目录和逻辑,建议点赞+收藏,搭配 Git 文档一起食用,效果满满

Git

在这里插入图片描述

初始化

在这里插入图片描述

基本操作(工作区,暂存区,版本库)

在这里插入图片描述

Tags

在这里插入图片描述

本地分支

在这里插入图片描述

分支思维图

在这里插入图片描述

分支管理

在这里插入图片描述

合并

在这里插入图片描述

remote 仓库

git remote 查看已经配置的远程仓库服务器

git remote -v 指定选项 -v,会显示需要读写远程仓库使用的 Git 保存的简写与其对应的 URL

git clone 克隆一个仓库

git remote add <shortname> <url> 添加一个远程仓库

git fetch <remote> 从远程仓库抓取自上一次抓取后的所有工作

值得注意的是 git fetch 命令只会将数据下载到你的本地仓库—它并不会自动合并或者修改你当前的工作,当准备好时你必须手动将其合并入你的工作

git push <remote> <branch> 推送到远程仓库的地址

git remote set-url origin <url> 更改远程仓库的地址

git remote show <remote> 查看一个远程仓库的更多信息

git remote rename <oldname> <newname> 修改一个远程仓库的简写名

git remote remove <shortname> 移除一个远程仓库

git remot rm <shortname> (一旦你使用这种方式删除了一个远程仓库,那么所有个这个远程仓库相关的远程跟踪分支以及配置信息也会一起被删除)

remote 分支

git ls-remote <remote> 来显式地获得远程引用的完整列表

git remote show origin 获得远程分支的更多信息

流程图:

在这里插入图片描述

拉取(clone / fetch / pull)

git clone

  1. git clone 一个仓库时,只会克隆远程仓库主分支的内容,不会克隆其他分支上的内容,当克隆一个仓库时,它通常会自动地创建一个跟踪 origin/master 的 master分支
  2. git clone 命令会为你自动将远程仓库命名为 origin,拉取它的所有数据,创建一个指向它的 master 分支的指针,并且在本地有一个远程跟踪分支 origin/master
  3. 如果你运行 git clone -o booyah,那么你默认的远程分支名字将会是 booyah/master

git fetch

  1. fetch 数据,就会从远程仓库中抓取数据,并且会更新本地数据库,移动 origin/master 指针到更新之后的位置
  2. 你只要不从服务器拉取数据,你的 origin/master 指针就不会移动
  3. 当抓取到新的远程跟踪分支时,本地不会自动生成一份可编辑的副本(拷贝)。换句话说,这种情况下,不会有一个新的 serverfix 分支--------只有一个不可以修改的 origin/serverfix 指针
  4. 可以运行 git merge origin/serverfix 将这些工作合并到当前所在的分支,如果想要在自己的 serverfix 分支上工作,可以将其建立在远程跟踪分支上

git pull

  1. git pull 相当于 git fetch + git merge
  2. git pull 会查找当前分支所跟踪的服务器与分支,从服务器上抓取数据,然后尝试合并入那个远程分支

本地分支与远程跟踪分支建立联系(跟踪分支)

在这里插入图片描述

git clone 只会在本地创建 origin/mastermaster 跟踪分支

推送 (push)

在这里插入图片描述

删除远程分支

可以使用运行带有 --delete 选项的 git push 命令来删除一个远程分支

git push origin --delete <branchName>

为项目做贡献(Fork)

在这里插入图片描述

流程通常如下:

  1. 派生一个项目
  2. master 分支创建一个新分支
  3. 提交一些修改来改进项目
  4. 将这个分支推送到 GitHub 上
  5. 创建一个拉取请求
  6. 讨论,根据实际情况继续修改
  7. 项目的拥有者合并或关闭你的拉取请求
  8. 将更新后的 master 分支同步到你的派生中
### GitGitHub中的工作机制与逻辑原理 #### GitHub的核心功能概述 GitHub 是基于 Git 构建的一个在线平台,主要用于代码托管和协作开发。它不仅提供了对 Git 功能的支持,还扩展了许多额外的功能,比如问题跟踪、持续集成支持以及社交编码工具等[^3]。 #### Git的版本管理逻辑 Git 的版本管理采用了分布式存储的方式,这意味着每一个开发者都拥有完整的代码库副本。这种设计使得即使中央服务器不可用的情况下,本地仍然可以继续进行各种操作,如提交更改、创建分支等。具体而言,Git 使用了一种三级缓冲机制——工作区、暂存区(索引)和仓库来实现高效版本控制[^4]。 当用户执行 `commit` 操作时,实际上是在当前分支的历史链表中新增加了一个节点,并更新该分支指向最新状态;每次 commit 都会保存整个目录树的状态快照而非仅仅记录差异文件列表。因此即便某个特定时刻需要恢复旧版程序也极为简单快捷[^4]。 #### 分支模型及其意义 Git 中最强大的特性之一就是它的分支系统。与其他集中式VCS相比,Git 创建新分支成本极低因为它们只是简单的指针指向某次提交而已而不是复制全部数据结构出来形成独立拷贝[^4]。这允许团队成员在同一时间处理多个特性和错误修复而不互相干扰直到准备好了再合并回去主线上去. 另外值得注意的是rebase 和 merge这两种常见的整合策略各有优劣之处取决于具体的场景需求选择合适的方案非常重要[^1]。Merge保留了所有的历史信息包括各个子线程上的改动轨迹便于追踪审计; 而Rebase则试图让最终呈现出来的历史更加整洁干净但代价可能是丢失了一些原始上下文关联关系[^2]. #### 数据对象存储特点 考虑到空间利用率方面的问题,git内部不会重复存储完全一致的内容哪怕它们属于不同名字下的实体(例如两个具有同样内容却命名不一样的文本档)[^5].这是因为hash算法SHA-1被用来唯一标识每一块独一无二的数据块(blobs),只要两者的实际二进制序列相匹配就会共享同一个物理位置从而减少冗余浪费现象发生几率极大降低磁盘占用率的同时加快检索速度提升整体性能表现水平.[^5] ```bash [root@vm-20-8-centos git-demo]# echo 'aaa' > b.txt [root@vm-20-8-centos git-demo]# echo 'aaa' > c.txt [root@vm-20-8-centos git-demo]# git hash-object -w b.txt 72943a16fb2c8f38f9dde202b7a70ccc19c52f34 [root@vm-20-8-centos git-demo]# git hash-object -w c.txt 72943a16fb2c8f38f9dde202b7a70ccc19c52f34 ``` 以上例子展示了如何利用相同的哈希值表示相同内容的不同文件实例,进一步验证了前面提到过的关于节省资源消耗的说法成立与否的事实依据所在处[^5]. ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值