首页 > 其他分享 >大厂版本控制利器——GIT——最先进的分布式版本控制系统

大厂版本控制利器——GIT——最先进的分布式版本控制系统

时间:2023-08-27 16:33:07浏览次数:51  
标签:GIT Git 版本 版本控制 合并 git 提交 分布式 分支

哈喽,大家好,我是指北君

作为程序员,对版本控制工具肯定不陌生。对很多资深程序员来说,CVS 和 SVN 曾经占据着统治地位。随着互联网飞速发展,为了更好地适应互联网时代软件版本管理的需要,采用分布式版本库的 Git 应运而生,并迅速占领各大互联网阵地,独占鳌头。

关于Git

大厂版本控制利器——GIT——最先进的分布式版本控制系统_发行版

Git 是 Linus Torvalds (你没看错,就是 Linux 创始人) 为了帮助管理 Linux 内核开发而开发的一个免费和开源的版本控制软件,它采用了分布式版本库的方式,不必服务器端软件支持,旨在快速高效地处理从小型项目到大型项目的所有项目。

Git 易于学习,占用空间小,性能快如闪电。它优于 SCM 工具,如 Subversion、CVS、Perforce 和 ClearCase,具有廉价的本地分支、方便的暂存区域和多个工作流等功能。

Git 特性

分支和合并

Git 允许并鼓励拥有多个可以完全相互独立的本地分支。这些开发线的创建、合并和删除只需几秒钟。可以执行以下操作:

  • 无摩擦上下文切换:创建一个分支来尝试一个想法,提交几次,切换回你分支的地方,应用补丁,切换回你正在试验的地方,然后合并它。
  • 基于角色的代码行:拥有一个始终只包含用于生产的分支,另一个将工作合并到其中以进行测试,以及几个较小的分支用于日常工作。
  • 基于特征的工作流程:为您正在处理的每个新功能创建新分支,以便您可以在它们之间无缝地来回切换,然后在该功能合并到您的主线时删除每个分支。

小而快

Git 速度很快。使用 Git,几乎所有操作都在本地执行,在需要不断与某处服务器通信的集中式系统上,它具有巨大的速度优势。

Git 是为在 Linux 内核上工作而构建的,这意味着它从一开始就必须有效地处理大型存储库。

Git 是用C编写的,减少了与高级语言相关的运行时开销。速度和性能从一开始就是 Git 的主要设计目标。

分布式

Git 最佳特性之一就是它是分布式的。这意味着无需对源代码的当前提示进行“签出”,而是对整个存储库进行“克隆”。

数据保障

Git 使用的数据模型可确保项目每一部分的加密完整性。

每个文件和提交都会在签出时通过其校验和进行校验和检索。除了你输入的确切位之外,不可能从 Git 中得到任何东西。

大多数集中式版本控制系统默认不提供这种完整性。

暂存区

Git 有一个叫做“暂存区”或“索引”的内容。这是一个中间区域,可以在完成提交之前对提交进行格式化和审查。

Git 可以快速暂存一些文件并提交它们,而无需提交工作目录中的所有其他修改文件,也不必在提交期间在命令行中列出它们。

安装 Git

  • 在 Linux 上安装

如果你想通过二进制安装程序在 Linux 上安装基本的 Git 工具,你通常可以通过你的发行版附带的包管理工具来完成。如果您使用 Fedora(或任何密切相关的基于 RPM 的发行版,例如 RHEL 或 CentOS),您可以使用dnf:

$ sudo dnf install git-all

如果使用的是基于 Debian 的发行版,例如 Ubuntu,请尝试apt:

$ sudo apt install git-all
  • 在 macOS 上安装

在 Mac 上安装 Git 有多种方法。最简单的可能是安装 Xcode 命令行工具。在 Mavericks (10.9) 或更高版本上,您只需第一次尝试git从终端运行即可做到这一点。

$ git --version

如果还没有安装,会提示安装它。

  • 在 Windows 上安装

有几种方法可以在 Windows 上安装 Git。官方的构建版本可在 Git 网站上下载——转到git-scm.com/download/wi…

请注意,这是一个名为 Git for Windows 的项目,它与 Git 本身是分开的

常用操作 & 命令

  • 创建新仓库

创建新文件夹,打开,然后执行如下命令:

git init
  • 检出仓库

执行如下命令以创建一个本地仓库的克隆版本:

git clone /path/to/repository

如果是远端服务器上的仓库,命令会是这样:

git clone username@host:/path/to/repository
  • 添加和提交

添加更改(把它们添加到暂存区),使用如下命令:

git add <filename>
git add *

实际提交改动,使用如下命令:

git commit -m "代码提交信息"

至此,改动已经提交到 HEAD,但没到远端仓库。

  • 推送改动

确定改动已经在本地仓库,执行如下命令以将这些改动提交到远端仓库:

git push origin master

可以把 master 换成你想要推送的任何分支。

  • 分支

创建分支,并切换过去:

git checkout -b feature_x

切换回主分支:

git checkout master

再把新建的分支删掉:

git branch -d feature_x
  • 更新与合并

更新本地仓库至最新改动,执行:

git pull

合并其他分支到当前分支(例如 master),执行:

git merge <branch>

当更新和合并出现冲突(conflicts)时,需要修改这些文件来手动合并这些冲突(conflicts)。改完之后,执行如下命令以将它们标记为合并成功:

git add <filename>

在合并改动之前,你可以使用如下命令预览差异:

git diff <source_branch> <target_branch>

指北君有话说

Git作为开源的版本控制软件,能占据统治地位,其本身契合互联网浪潮下版本管理诉求的设计理念功不可没。对应程序员们来说,无论是个人使用,还是公司内应用,都少不了 Git。


关注公众号 [程序员了不起]回复[eee113] 即可获取navicat绿版


标签:GIT,Git,版本,版本控制,合并,git,提交,分布式,分支
From: https://blog.51cto.com/u_16231677/7253666

相关文章

  • MFC-GetDlgItemText获取指定控件的文本
     TCHARname[256];HWNDhWnd=GetSafeHwnd();intn=::GetDlgItemText(hWnd,IDC_STATIC1,name,254);/*参数1:窗口句柄参数2:控件ID参数3:LPTSTRlpStr,//保存获取的文本的缓冲区参数4:nMaxCount指定了要拷贝到lpStr的字符串的最大......
  • github.com/json-iterator/go 详细教程
    最近接触到了github.com/json-iterator/go,是由滴滴开源的第三方json编码库,它同时提供Go和Java两个版本。文中大量内容来自github上的wiki文档,有兴趣的朋友可以直接点击Home跳转到官方文档查阅。本文加了些自己的思考以及相关的详细学习例子,废话不多说了,冲!!!1、基础介......
  • Git
    一、Git组成工作区间:本机工作空间的代码,即电脑硬盘里的代码。缓存区:即暂存区,数据暂时存放的区域。本地仓库:存放已经提交了的数据。远程仓库:远程服务器。git文件四种状态https://www.cnblogs.com/utank/p/12180531.html二、Git基本命令1.基础操作gitclonehttps://githu......
  • 多用户git设置样本
     0准备:如果之前用过git,需要清空global设置:#取消全局配置gitconfig--global--unsetuser.namegitconfig--global--unsetuser.email2在本地建立仓库3在该仓库下设置:#每个项目Repo设置自己的user.emailgitconfiguser.email"[email protected]"gitconfigu......
  • Adding a gitolite-controlled repository to Redmine
    Currently,weuse gitolite toaccesscontrolourGitrepositories.Inaddition,weuse Redmine tomanageourprojects.ThestandardinstallationofRedminecanonlyaccessalocalGitrepositoryviadirectaccesstothefilesystem.Unfortunately,Redmine......
  • Mercurial(HG)版本控制服务用户名验证
    在之前的文章中,在Windows使用apache搭建Mercurial版本控制服务,并没有说到如何验证用户,而是允许所有人都提交。当时还不会怎么配置。1,用htpasswd.exe建立用户密码文件htpasswd.exe在apache的bin目录可以找到,使用方法主要有htpasswd-c文件名用户名       ......
  • Git查看本机 ssh 公钥或生成公钥
    第一步查看git的ssh公钥是否存在在安装目录中打开GitBash并打开,然后在GitBash输入以下命名查看是否有密钥:ls-al~/.ssh第二步查看git的ssh公钥内容,并复制git的ssh公钥存储在id_rsa.pub文件中,如果id_rsa.pub文件,直接输入命令查看git公钥:cat~/.ssh/id_rsa.pub......
  • [转]vcpkg+opencv4(sfm+vtk)+openMVS+SFM算法-github代下载(http://gitd.cc/)
    1、vcpkg+opencv4(sfm+vtk)+openMVS+SFM算法-github代下载(http://gitd.cc/)2、OpenMVS详细安装教程(ubuntu18.04)3、ubuntu18.04安装openMVS......
  • Git 相关指令(持续更新)
    https://www.cnblogs.com/zylyehuo/#在centos7环境下查看系统版本cat/etc/redhat-release#(1)安装gityuminstall-ygit#(2)查看git版本git--version#(3)查看配置选项gitconfig#(4)配置git全局用户信息gitconfig--globaluser.name<用户名>gitco......
  • 利用GitHub 的Actions自动同步gitee仓库,并Gitee Pages 自动部署项目
    Gitee同步GitHub仓库GitHub有时候访问速度慢,加载不了图片等问题。过程记录GitHub的Actions会处理.github下的工作流文件夹workflows。只要在g项目根目录下创建.github/workflows/,在这个文件夹里再创建Sync.yml文件,填入以下代码。当产生push操作就会自动同步gitee<divid="......