工具:Git分布式版本控制系统

devtools/2024/10/20 13:32:32/


文章目录

    • 介绍
    • 分布式版本控制系统原理
    • git安装和使用
      • git软件分类
      • 安装软件
      • 注册开源社区github
      • git ssh key 配置
      • 远程仓库
      • 分支管理
      • 标签管理
    • 引用

介绍

分布式版本控制系统下的每一台终端都可以充当类似集中式版本控制系统的中央服务器。每台终端都可以保存版本库,并且版本库也可以不同,可以对每个版本库进行修改,修改完成后可以集中后最后更新,这更方便每个合作者之间的交流沟通。此外,git的分支等等策略更是合作方式的最佳办法。

分布式版本控制系统原理

理解git原理需要先理解几个术语:

  • 工作区:在编辑器内可增加或修改文件等位置;
  • 缓存区:只能通过git bash等窗口显示,它是提交代码、解决冲突的中转站;
  • 版本库:本地.git/目录,内含缓存区暂存区;
  • 本地仓库:连接本地代码和远程代码的枢纽,仅能通过git bash显示。在没有联网状态下,本地代码可先提交至该处;
  • 远程仓库:托管远程代码的中央服务器,如开源网站github

git_21">git安装和使用

git_23">git软件分类

git使用软件类型有git shellgit desktop两种类型,git shell是直接使用git 命令行,包括git addgit commit等,其中以git bash软件为代表;git desktop类型主要是图形界面软件,可以通过鼠标点击按钮实现git add和git commit等功能,其中以GitHub desktop,smartgit等为代表。这里分别推荐git bash和github desktop。

安装软件

  • 分别到git bash和github desktop网站下载对应操作系统版本的软件,这里就以git bash安装作为标准。
  • 按照默认设置安装git bash,完成后打开git bash,同时可以按照配置linux的shell环境一样配置git bash的环境,如.vimrc.bash_profile等文件,如下图所示。

  • 设置用户名和用户邮箱,该信息每次会通过修改提交git命令上传到远程仓库,也即为了识别用户。还有一个配置客户端长期存储用户名和密码的命令。
# 必须配置
git config --global user.name  "Hua"
git config --global user.email  "hua1@outlook.com"# 可选择配置
git config --global credential.helper store# 检查配置
git config --list 
>user.email=hua1@outlook.com
>user.name=Hua

github_51">注册开源社区github

github是全球程序员交流平台,又因程序员大多数是单身男性,因此也被称为全球基友交流平台。注册分为三步:

  1. 创建账户;
  2. 选择订阅;
  3. 分享经历。

git_ssh_key__61">git ssh key 配置

为何要配置git ssh key呢?ssh协议可以避免输入账户名和密码直接拉去或上传代码至远程仓库。通过配置本地电脑或者位置的rsa公钥至github网址,可以实现无需输入用户名和密码的方式方便快速地提交和更新代码。解决方案如下:

  1. 打开本地git bash,使用ssh-keygen -t rsa -C "emailname@mails.com",一路回车,最后生成的文件位于~/.ssh/目录。打开目录内的id_rsa.pub文件,复制内容。
  2. 打开github网站,点击右上角头像,下拉菜单显示setting选项,选择添加rsa公钥。
  3. 测试是否添加成功。
ssh -T git@github.com
>Hi Hua! You've successfully authenticated, but GitHub does not provide shell access.

远程仓库

远程仓库是可以充当“中央服务器”托管代码的位置,其他终端可以从该处获取原始代码,从这一点看好像分布式版本控制系统与集中式版本控制系统无太大差别,但git的每一台终端都可以充当“中央处理器”且无主次之分,一般情况下大家会把某台24小时开机的终端看成“中央处理器”,每台终端从服务器拉取代码和提交修改等。

  • GitHub仓库与本地仓库同步:GitHub已存在某个仓库,同时本地也存在同名仓库,为使得两仓库远程同步,只需要输入如下命令
# step1: 登陆GitHub并创建example_git远程仓库# step2: 跳转到本地仓库目录
cd  path_dir/example_git# step3: 初始化版本库 .git
git init # step4: 连接本地仓库和远程仓库
git remote add origin git@github.com:HuaZou/example_git # step5: 推送本地文件至远程仓库,并且关联本地和远程的master分支
git push -u origin master # 第一次推送使用-u参数,后续只需要 git push origin master
  • 克隆远程仓库:如想获取GitHub上的某个仓库,只需要在本地使用做如下处理:
# step1: 克隆远程仓库至本地工作区
git clone git@github.com:HuaZou/example_git# step2: 查看工作区文件状态
git status# step3: 提交工作区修改文件等至暂存区
git add filesname# step4: 提交操作命令描述至本地仓库
git commit -m "operation description"# step5: 推送本地仓库至远程仓库,注意保证远程仓库的head是高于本地仓库,否则会发生conflict错误
git push origin master
  • 版本回退:版本信息均存在.git目录,可以使用git loggit log --pretty=oneline查看head信息也即提交信息等。git reset --hard commit_id回到某个提交命令的版本。

  • 撤销修改:发现某些修改需要撤回是,可以根据修改提交状态选择命令
# step1: 查看文件状态
git status  # step2: 如果文件只通过git add提交到暂存区
git checkout -- filename.txt# step3: 如果文件已经通过git commit提交到本地仓库
git reset HEAD filename.txt # git reset不仅仅可以版本库回退也可以文件撤回修改
  • 删除文件:未添加至暂存区和已添加两种情况。前者使用基本的rm命令即可,后者删除动作是一个处理过程,也需要提交命令:1)git rm filename.txt;2)git commit -m "remove file"

分支管理

分支是从主支线上分离出来,分支上的操作不会影响主线的工作,在完成分支上的任务后再合并到主线即可。

  • 查看当前分支情况:git branch;
  • 创建分支:git branch branchname;
  • 切换分支:git checkout branchname;
  • 创建并切换分支:git checkout -b branchname;
  • 合并某分支到当前分支:git merge branch1; git branch -d branch1;
  • 删除分支:git branch -d branchname;

master分支一般仅仅发布新版本,工作的最新状态是在dev分支,其他人工作是在自己的分支等,如图:

标签管理

标签管理一般是工作完成到某个重要节点了,然后希望对工作进行标记,这个时候可以使用git tag给该阶段打上标签。

# 查看标签
git tag# 在某个版本打上标签
git tag v0.1 <可加上某个commit版本># 给标签加上其他信息
git tag -a v0.1 -m "version 0.1 released" 1094adb# 查看标签说明
git show v0.1# 删除标签
git tag -d v0.1# 推送标签
git push origin v0.1

引用

  1. git帮助文档
  2. 廖雪峰git教程

http://www.ppmy.cn/devtools/127296.html

相关文章

【OSCP Proving Grounds 靶场系列】Slort

作者&#xff1a;Eason_LYC 悲观者预言失败&#xff0c;十言九中。 乐观者创造奇迹&#xff0c;一次即可。 一个人的价值&#xff0c;在于他所拥有的。可以不学无术&#xff0c;但不能一无所有&#xff01; 技术领域&#xff1a;WEB安全、网络攻防 关注WEB安全、网络攻防。我的…

第二章 时间服务器

NTP 是网络时间协议&#xff08;Network Time Protocol&#xff09;的简称&#xff0c;通过 udp 123 端口进行网络时钟同步。 Chrony是一个开源自由的网络时间协议 NTP 的客户端和服务器软件。它能让计算机保持系统时钟与时钟服务器&#xff08;NTP&#xff09;同步&#xff0…

JavaWeb合集08-项目开发实战

八、项目开发 1、项目搭建 1.1 配置配置文件 application.properties文件 spring.application.namemybatis_testspring.datasource.driver-class-namecom.mysql.cj.jdbc.Driver spring.datasource.urljdbc:mysql://localhost:3306/homepage spring.datasource.usernameroot sp…

【报错处理】MR/Spark 使用 BulkLoad 方式传输到 HBase 发生报错: NullPointerException

博主希望能够得到大家的点赞收藏支持&#xff01;非常感谢 点赞&#xff0c;收藏是情分&#xff0c;不点是本分。祝你身体健康&#xff0c;事事顺心&#xff01; Spark 通过 BulkLoad 方式传输到 HBase&#xff0c;我发现会出现空指针异常。简单写下如何解决的。 原理&#xf…

ubuntu2404下搭建Odoo18开发环境

Odoo在windows下也可以开发&#xff0c;不过执行速度比较慢&#xff0c;经过我测试&#xff0c;重启一下服务&#xff0c;windows下需要十几秒甚至几十秒&#xff0c;而mac或者ubuntu只需要几秒钟。 另外&#xff0c;官方推荐的生产环境也是ubuntu&#xff0c;所以&#xff0c…

Olap数据处理

一、OLAP 是什么 1. OLAP的定义 OLAP&#xff08;Online Analytical Processing&#xff0c;联机分析处理&#xff09;是一种软件技术&#xff0c;它主要专注于复杂的分析操作&#xff0c;帮助分析人员、管理人员或执行人员从多角度对信息进行快速、一致、交互地存取&#xf…

SpringBoot车辆管理系统:设计与实施细节

摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了车辆管理系统的开发全过程。通过分析车辆管理系统管理的不足&#xff0c;创建了一个计算机管理车辆管理系统的方案。文章介绍了车辆管理系统的系统分析部分&…

【微服务】全面构建微服务监控体系:确保系统稳定与性能优化的关键

目录 引言一、微服务监控概述1.1 微服务监控的定义1.2 微服务监控的重要性1.3 监控的核心目标1.4 微服务监控的关键指标1.5 监控的策略 二、微服务监控的架构2.1 监控架构图2.2 架构组件2.3 监控架构示意图 三、微服务监控的工具3.1 工具概述3.2 Prometheus3.3 Grafana3.4 ELK …