git的实战应用 | 青训营

2023年 8月 28日 28.3k 0

git历史

Git历史
Git 诞生于一个极富纷争大举创新的年代。Linux 内核开源项目有着为数众多的参与者。 绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上(1991-2002年间)。 到 2002 年,整个项目组开始启用一个专有的分布式版本控制系统 BitKeeper 来管理和维护代码。
到了 2005 年,开发 BitKeeper 的商业公司同 Linux 内核开源社区的合作关系结束,他们收回了 Linux 内核社区免费使用 BitKeeper 的权力。 这就迫使 Linux 开源社区(特别是 Linux 的缔造者 Linus Torvalds)基于使用 BitKeeper 时的经验教训,开发出自己的版本系统。
他们对新的系统制订了若干目标:

  • 速度
  • 简单的设计
  • 对非线性开发模式的强力支持(允许成千上万个并行开发的分支)
  • 完全分布式
  • 有能力高效管理类似 Linux 内核一样的超大规模项目(速度和数据量)

git 工作流程

image.png
首先看上图,先清楚Workspace:工作区,Index/Stage:暂存区Repository:仓库区(或本地仓库),Remote:远程仓库了解上述概念后。

我们在使用git的时候,如果是使用别人的仓库的话。

  • 首先我们会将remote使用fetch/clone命令将别人代码放入到自己本地仓库。
  • 然后经过checkout将代码放入我们的工作区之中。
    第二次及以后,我们首先需要从远程仓库pull更新后的代码进入我们的工作区。
  • 那我们如果需要进行将本地代码推向远程仓库,该怎么办呢?
    首先我们将更改后的代码add到index,然后简单介绍修改的原因和内容然后commit进入本地仓库。最后push到远程仓库。

    git相关命令

    初始化仓库

    随便打开一个文件夹,然后我们在git base页面中输入这段命令git init后,打开隐藏文件夹就会发现有一个.git文件存在,但是这个本地目录还没有关联到远程仓库。

    git add *.c
    git add README
    git commit -m '初始化项目版本'
    

    以上命令将目录下以 .c 结尾及 README 文件提交到仓库中。

    克隆git仓库

    我们使用 git clone 从现有 Git 仓库中拷贝项目。

    克隆仓库的命令格式为:

    git clone 
    

    如果我们需要克隆到指定的目录,可以使用以下命令格式:

    git clone  
    

    参数说明:

    • repo: Git 仓库。
    • directory: 本地目录。

    创建仓库命令

    下表列出了 git 创建仓库的命令:

    命令 说明
    git init 初始化仓库
    git clone 拷贝一份远程仓库,也就是下载一个项目。

    提交与修改

    git add 添加文件到暂存区
    git status 查看仓库当前的状态,显示有变更的文件。
    git diff 比较文件的不同,即暂存区和工作区的差异。
    git commit 提交暂存区到本地仓库。
    git reset 回退版本。
    git rm 将文件从暂存区和工作区中删除。
    git mv 移动或重命名工作区文件。

    熟悉linux命令可以发现,这里大部命令和Linux的命令都是相像的。

    提交日志

    命令 说明
    git log 查看历史提交记录
    git blame 以列表形式查看指定文件的历史修改记录

    远程操作

    命令 说明
    git remote 远程仓库操作
    git fetch 从远程获取代码库
    git pull 下载远程代码并合并
    git push 上传远程代码并合并

    git的分支管理

    这一个部分是git的重头戏,因为几乎每一种版本控制系统都以某种形式支持分支,一个分支代表一条独立的开发线。使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作。

    也就意味着git分支减少代码冲突的可能性,实现分支开发后汇总到总文件之中。

    image.png

    如上图所示,假设现在有一个业务环境,我们有两个主要模块。首先我们先做整体架构的设计,然后一个开发小组新建一条分支用于开发第二个的模块。主分支由一个开发小组负责,后面又提出了新的需求就会再开一条分支由其他开发小组进行开发。等开发完成,再进行统一的汇总到主分支之中。

    遇到分支冲突的情况,我们需要去查看相关冲突代码然后确定那个是需要写入远程仓库的,然后进行分支合并。如果出错了,应该及时进行版本的回退重新规划。

    相关文章

    服务器端口转发,带你了解服务器端口转发
    服务器开放端口,服务器开放端口的步骤
    产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
    如何使用 WinGet 下载 Microsoft Store 应用
    百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
    百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

    发布评论