首页 > 其他分享 >(概念篇)Hello,Mac Git,I'm coming.

(概念篇)Hello,Mac Git,I'm coming.

时间:2022-12-11 13:01:36浏览次数:81  
标签:SVN git 暂存区 Mac Git 版本 config Hello


LZ-Says:镜子碎了,再粘合,也恢复不了当初的样子。


(概念篇)Hello,Mac Git,I

本系列,仅限于个人学习总结,如有侵权,请联系博主进行删除~!

还请各位转载的小伙伴,将原文作者链接一并转发,写文不易,且行且珍惜~!

一、前言

想当年,从 SVN 小王八到如今的 Git,技术的变革,真是让人应接不暇。

LZ 一直常用的就是小王八,对 Git 是爱恨交加,遂果断采用可视化工具。

原以为就这样浪下去了,没想到,Enmmm,换了份工作之后,公司大佬,全栈比比皆是,相比之下,LZ low 到家了。

由于对 Git 的不熟悉,而且,之前 LZ 也只是玩哥儿们的 Mac Pro,对 Mac 操作也还停留初级朦胧的状态。遂,今日,来公司正好基于 Mac 来一波实战。

接下来,新手司机开车咯~

二、Git 初识


(概念篇)Hello,Mac Git,I

  1. Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
  2. Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
  3. Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。

2.1 Git 与 SVN 区别

Git 不仅仅是个版本控制系统,它也是个内容管理系统 (CMS),工作管理系统等。

而下面,我们一起来了解一下又挂 Git 与 SVN 区别:

1、Git 是分布式的,SVN 不是:这是 Git 和其它非分布式的版本控制系统,例如 SVN,CVS 等,最核心的区别;

2、Git 把内容按元数据方式存储,而 SVN 是按文件:所有的资源控制系统都是把文件的元信息隐藏在一个类似 .svn,.cvs 等的文件夹里;

3、Git 分支和 SVN 的分支不同:分支在 SVN 中一点不特别,就是版本库中的另外的一个目录;

4、Git 没有一个全局的版本号,而 SVN 有:目前为止这是跟 SVN 相比 Git 缺少的最大的一个特征;

5、Git 的内容完整性要优于 SVN:Git 的内容存储使用的是 SHA-1 哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。

这里补充下有关集中式和分布式的区别(基于廖神 Git 教程,文末见链接地址):

CVS 及 SVN 都是集中式的版本控制系统,而 Git 是分布式版本控制系统,集中式和分布式版本控制系统有什么区别呢?

针对集中式版本控制系统而言,版本库是将数据集存放于中央服务器,而工作时,我们需要将服务器数据也就是项目拉取到本地,开发完毕推送当服务器上。


(概念篇)Hello,Mac Git,I

而集中式版本控制系统最大的毛病就是必须联网才能工作,而且最坑的一点就是,网速 low 到爆的时候,上传文件几乎会奔溃。

与集中式不同的便是分布式版本控制系统,这个系统主要、最鲜明的特别便是,安全性会比集中式高很多,试想一下,SVN 服务器挂了,你还能玩么?痛不欲生呢。而分布式,每个人都可以理解为是一个服务器,每个人都具有完整的版本库,任何一方出现不可避免的问题,都可以很快速从其他站点(同事)克隆 / 复制 一份即可。

但是在实际工作中,分布式也会有一台服务器或者版本存放工具作为服务器,当我们修改文件后,将修改后的内容推送到服务器上,而其他人只需要直接更新即可。


(概念篇)Hello,Mac Git,I

当然,Git 的优势有很多,不仅仅是如上不联网,还有强大的分支管理等等优势足以碾压当年我们的小王八。

2.2 下载、安装:

安装下载地址:

​https://sourceforge.net/projects/git-osx-installer/​

安装界面如下:


(概念篇)Hello,Mac Git,I

无脑式安装,这里不做过多说明了。

具体详情,可点击下方链接进行查看了解学习L:

​http://www.runoob.com/git/git-install-setup.html​

三、Git 命令简单了解

一起来开搞,搞点事情,搞点命令~

3.1 git version

打开命令行,键入如下命令,查看当前本地安装 Git 版本:

git version

如下图:


(概念篇)Hello,Mac Git,I

当前 LZ 安装的版本为:2.1.18

3.2 git config 系列

Git 提供了一个叫做 git config 的工具,专门用来配置或读取相应的工作环境变量。

这些环境变量,决定了 Git 在各个环节的具体工作方式和行为。

这些变量可以存放在以下三个不同的地方:

  • /etc/gitconfig 文件:系统中对所有用户都普遍适用的配置。若使用 git config 时用 –system 选项,读写的就是这个文件;
  • ~/.gitconfig 文件:用户目录下的配置文件只适用于该用户。若使用 git config 时用 –global 选项,读写的就是这个文件;
  • 当前项目的 Git 目录中的配置文件(也就是工作目录中的 .git/config 文件):这里的配置仅仅针对当前项目有效。每一个级别的配置都会覆盖上层的相同配置,所以 .git/config 里的配置会覆盖 /etc/gitconfig 中的同名变量。

1、git config –global user.name/email “content”

同理,在命令行中依次键入如下命令,进行配置当前环境下用户名以及使用邮箱

git config –global user.name “用户名”
git config –global user.email “邮箱”

如下图:


(概念篇)Hello,Mac Git,I

如果用了 –global 选项,那么更改的配置文件就是位于你用户主目录下的那个,以后你所有的项目都会默认使用这里配置的用户信息。
如果要在某个特定的项目中使用其他名字或者电邮,只要去掉 –global 选项重新配置即可,新的设定保存在当前项目的 .git/config 文件里。

一般网上大部分的教程都是安装 Git 之后配置用户名以及邮箱,LZ 当初不知道,俩眼一抹黑,哈哈~

可视化工具,让我忘记还有命令这么一说,2333~

2、git config –list

命令行中键入如下命令,查看当前配置信息

git config –list

如下图:


(概念篇)Hello,Mac Git,I

3、git config user.name/user.email

命令行中键入如下命令,查看当前具体配置信息

git config user.name / user.email

如下图:


(概念篇)Hello,Mac Git,I

4、git config –global core.editor 编辑器名称

命令行键入如下命令,设置Git默认使用的文本编辑器, 一般可能会是 Vi 或者 Vim。如果你有其他偏好,比如 Emacs 的话,可以重新设置::

git config –global core.editor emacs

LZ 还是使用默认的吧,懒得改。

5、git config –global merge.tool 差异分析工具名

命令行键入如下命令:设置在解决合并冲突时使用哪种差异分析工具。比如要改用 vimdiff 的话:

git config –global merge.tool vimdiff

Git 可以理解 kdiff3,tkdiff,meld,xxdiff,emerge,vimdiff,gvimdiff,ecmerge,和 opendiff 等合并工具的输出信息。

简单了解后,我们了解一下有关 Git 的工作流程~

四、Git 工作流程

一般工作流程如下:

  • 克隆 Git 资源作为工作目录;
  • 在克隆的资源上添加或修改文件;
  • 如果其他人修改了,你可以更新资源;
  • 在提交前查看修改;
  • 提交修改;
  • 在修改完成后,如果发现错误,可以撤回提交并再次修改并提交。

具体对应图如下(这里直接盗取现有图,链接在文末):


(概念篇)Hello,Mac Git,I

工作流程和我们之前使用小王八差不多,第一步都是需要拿到项目到本地,之后进行编辑,提交,其中也包含一些更新或者解决冲突等等,这里就不过多描述了。

五、Git 工作区、暂存区和版本库了解

我们首先来理解下 Git 工作区、暂存区和版本库概念:

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

Enmmm,一知半解,接下来通过流程图,我们看看能否有进一步的理解吧。

下面这个图展示了工作区、版本库中的暂存区和版本库之间的关系:


(概念篇)Hello,Mac Git,I

左侧为工作区,也就是我们第一步将项目克隆/拉取到本地之后进行开发的环境,可以理解为我们电脑本地工作区;

右侧为版本库,标记为 “index” 的区域就是暂存区,而标记为 “master” 的是 master 分支所代表的目录树。

简单可以理解为:

当我们本地工作区修改后的内容通过 add 添加到版本库中的暂存区,当我们进行最终的 commit 时才会进行最后提交,也就是正式提交到版本库中。当然,其中包含切换分支等等。这里仅仅作为一个简单理解,如果 LZ 理解有误,欢迎指正沟通。

下面先简单为大家贴出教程为我们总结的小内容:

  • 图中我们可以看出此时 “HEAD” 实际是指向 master 分支的一个”游标”。所以图示的命令中出现 HEAD 的地方可以用 master 来替换;
  • 图中的 objects 标识的区域为 Git 的对象库,实际位于 “.git/objects” 目录下,里面包含了创建的各种对象及内容;
  • 当对工作区修改(或新增)的文件执行 “git add” 命令时,暂存区的目录树被更新,同时工作区修改(或新增)的文件内容被写入到对象库中的一个新的对象中,而该对象的 ID 被记录在暂存区的文件索引中;
  • 当执行提交操作(git commit)时,暂存区的目录树写到版本库(对象库)中,master 分支会做相应的更新。即 master 指向的目录树就是提交时暂存区的目录树;
  • 当执行 “git reset HEAD” 命令时,暂存区的目录树会被重写,被 master 分支指向的目录树所替换,但是工作区不受影响;
  • 当执行 “git rm –cached ” 命令时,会直接从暂存区删除文件,工作区则不做出改变;
  • 当执行 “git checkout .” 或者 “git checkout – ” 命令时,会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区的改动;
  • 当执行 “git checkout HEAD .” 或者 “git checkout HEAD ” 命令时,会用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区和以及工作区中的文件。这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动。

六、个人公众号

不定期发布博文,感谢已关注各位老铁理解,谢谢~


(概念篇)Hello,Mac Git,I

参考资料

  1. Git 官方:​​https://git-scm.com​​;
  2. Git 教程 | 菜鸟教程:​​http://www.runoob.com/git/git-tutorial.html​​;
  3. 廖雪峰 Git 教程:​​https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000​​;


标签:SVN,git,暂存区,Mac,Git,版本,config,Hello
From: https://blog.51cto.com/u_13346181/5928259

相关文章

  • 2022 年万圣节 Github 彩蛋
    ......
  • 第 4 章 Git 分支操作 & 第 5 章 Git 团队协作机制
    第4章Git分支操作4.1什么是分支  在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独分支。使用分支意味着程序员可以把自己的工作从开......
  • 第2章 Git 安装 or 第 3 章 Git 常用命令
    第2章Git安装官网https://git-scm.com/高速下载网址https://registry.npmmirror.com/binary.html?path=git-for-windows/安装时无脑下一步有这个就安装成功了图......
  • 第 6 章 GitHub 操作
    第6章GitHub操作GitHub网址:https://github.com/6.1创建远程仓库成功之后6.2远程仓库操作命令名称作用gitremote-v查看当前所有远程地址别......
  • 第 10 章 自建代码托管平台-GitLab
    第10章自建代码托管平台-GitLab10.1GitLab简介GitLab是由GitLabInc.开发,使用MIT许可证的基于网络的Git仓库管理工具,且具有wiki和issue跟踪功能。使用Git作为代码管......
  • 第 8 章 IDEA 集成 GitHub
    第8章IDEA集成GitHub8.1设置GitHub账号mr15597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目前用token登录8.2分享工程到GitHub如果失败继续Push成......
  • 第 7 章 IDEA 集成 Git
    第7章IDEA集成Git7.1配置Git忽略文件1.Eclipse特定文件2.IDEA特定文件3.Maven工程的target目录问题1:为什么要忽略他们?答:与项目的实际功能无关,不参......
  • 第1章 Git 概述
    第1章Git概述 Git是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目。 Git易于学习,占地面积小,性能极快。它具有廉价的本地库,......
  • Git——从入门到入云
    (一)Git——安装与初始化安装 安装其实就比较简单的,把Git下载过来,一直下一步就行,没什么难度。命令 接下来介绍一些简单的Git命令。1.用户签名 用户签名的作用就是告诉别......
  • 如何解决 [email protected] permission denied (publickey). fatal could not read from
    出现这个问题是你电脑的本地没有去生成密钥,并且没有将生成的公钥设置在github上,所以会出现这样的问题。解决办法的链接:https://juejin.cn/post/7026188300218007560。......