当前位置:首页 > 科技数码

Git 看这一篇就够了

作者|素帝本治

书篇|屠民

头部地图|从CSDN东部IC下载

这篇文章向码农田消制投稿

只有知道原因才能知道。本文分享Git的实现原理,梳理每天最常用的12条命令,分为三类分享。

这篇文章的结构如下。

作者与发展的原因

Git中的数据模型

常用命令

资源推荐

作者与发展的原因

Talk is cheap。Show me the code。

这篇文章来自Linux和Git的作者Linus Torvalds。

最初,Linux内核的版本控制系统使用BitKeeper,但2005年BitMover不再由Linux开发团队免费使用。

莱纳斯,听着,你不用吗?老子自己写!

所以大佬在10天内完成了Git的第一个版本。

所以Git是免费的开源版本控制系统。

版本管理系统

版本管理其实大家都用过,当年修改的简历:

索契简历2012版

索契简历2013版

索契简历2014版

索契简历2015版

索契简历2016版

索契简历2017版

索契简历2018版

索契简历2019版

.

而且,还有当年死也不改的毕业论文。

毕业论文最终版

毕业论文最终版

毕业论文的最终版

毕业论文的最后版

毕业论文最终不会改版

毕业论文最终真的不能改版

毕业论文最终不会真正改版

毕业论文最后死也不会改版

毕业论文最后死也不改版2

.

没错。这是本地版本控制系统。

显然,优点很简单,但只有一个人能在这里修好,不能和别人完成合作。(约翰f肯尼迪,努力)出现了以下两个主要的版本控制系统:

1. 集中化版本控制系统

集中版本控制系统(cvcs)

示例:CVS、Subversion、Perforce、etc。

此版本控制系统有一台中央管理服务器,用于存储所有文件的最新版本,您可以连接到该服务器以导入或提交文件。

与本地版本控制系统相比,此模式有所改进,但缺点也很明显:如果服务器停机,操作将延迟,数据可能丢失。分布式版本控制系统应运而生。

2. 分布式版本控制系统

分布式版本控制系统(dvcs)

示例:Git、Mercurial、Bazaar、etc。

分布式版本控制系统可以完全镜像代码仓库,以便在一台服务器出现故障时恢复到另一台仓库。

此外,这种模型可以方便地与其他公司的人开发相同的项目,因为两个远程代码仓库可以交互。这在以前的集中式系统中是不可能的。

那么什么叫“把代码仓库完整地镜像下来”呢?

CVCS每个版本都存储当前版本和以前版本之间的差异,因此也称为基于差异的版本管理。

Git存储所有文件的快照(快照),如果某些文件未修改,则仅保留指向以前保存的文件的一个参照。

我不太明白?那么一会儿见~

Git中的数据模型

1. 什么是快照 (snapshot) 呢?

首先在两个Git中学习术语。

水滴,是单个文件。

树,这是文件夹。

快照是正在跟踪的顶级树。

例如,我的“公众号”文件夹的结构是

那么快照就是追踪的“公众号”。

2. 本地库的数据模型

Git记录每个快照的parent,即当前此文件夹的早期版本。

然后,快照的迭代更新过程可以直接表示为非循环图。熟悉吗?我们在“拓扑”一句中忘了的小伙伴赶紧去公众号回复“拓扑”,得到拓扑的入门文章~

每个快照实际上对应commit一次。使用代码表示。

Class commit {

Arraycommit parents

String author

String message

Tree snapshot

}这是Git的数据模型。

Blob、tree和snapshot都是一样的。Git中的对象,可以全部引用或检索,也可以基于SHA-1 hash寻址。

Git cat-file -t:查看每个SHA-1的类型Git cat-file -p:查看每个对象的内容和简单的数据结构。

但是通过这个哈希值搜索也太不方便了。最终,这是一个40位十六进制字符字符串,即输出到git log第二部分的代码。

因此,Git还提供了参考参考。

例如,我们一般的海德就是一个特别的引用。

本地库由对象和引用或Repositories组成。

在硬盘上,Git仅存储对象和引用,所有Git命令都提交快照。

那有什么常用命令?

常用命令

本章介绍常用的日常命令。

本地操作

与远程库交互

团队协作-分支

本地操作

在学习通用命令之前,首先需要知道Git的“三个分区”和该文档的“三种状态”。

工作区:在当地实际写代码的地方。不管是直接用vim修复,还是用在IDE上。

相应的文件状态已修改、修改,但尚未保存到数据库中。

暂存区:暂存区。

相应的文件状态如下:staged,Git已经标记了文件。我知道下一次提交将包括在内。

本地库:存储本地历史版本信息。

文件状态为committed,文件安全地存储在本地数据库中。

1. $ git add

工作区中更改代码,然后使用git add将其提交到舞台区域。

这里的文件发生了很大的变化,但不是所有的文件都需要提交。我们将设置git ignore文件。也就是说,不要提交build project自动生成的文件等文件。

需要commit才能从

2. $ git commit -m "comment"

登台区提交到本地库。

一般来说,后面加上-m加comment,简单说明更改内容或原因,我们公司都基本上可以附加Jira链接,知道这个更改对应哪个任务。(大卫亚设)。

那么,如果想再次改变,可以再次git add。commit这个词是指

$ gitcommit-amend仍然是git日志信息。

3. $ git log

git log可以查看提交的信息,每个commit的comment和作者、日期等信息从最近到现在都可以查看。例如:

commit 5 ABCD 17 dgg s 9s 0 a 7 a 91 NFS AGD 8 ay 76875 af s 7d 6

Author:小齐小齐@ 163.com

Date: XXX XXX XXX

Test文件commit后面的这个数字是每个历史记录的索引。例如,当版本需要向前或向后退时使用。

这样打印的log太多,更简洁的打印方式如下:

$ gitlog-oneline作为一行打印。

或者:

更多使用$ git reflog。

4. $ git reset

那么,就像刚才说的,如果需要前进或返回到某个版本,请使用。

$ git reset - hard编号将直接转到与此编号对应的版本。

那这个硬是什么意思?

这里有三个参数:hard、soft、mixed,我一次说一个。

回到我们最重要的这幅画。

我们刚才说的前进或后退到特定版本是对本地库的工作。

有一个问题。如果本地库中的代码跳转到该版本,则工作区和舞台区域中的代码与本地库中的代码不同步!

这些参数用于控制是否进行这种同步。

$ git reset --hard xxx

岁的区域全部同步,跳转到此XXX版本。

$ git reset --soft xxx

之前的两个区不同步,只有本地库跳转到此版本。

$ git reset --mixed xxx

舞台区域已同步,工作区不移动。

所以,更多使用的是hard。

远程交互

与远程库的交互主要是推、拉,也就是写和读。

5. $ git push

小智写完代码,要提交到公司的代码仓库,这个过程需要使用git push。

当然。这样写的话会对的。毕竟还需要Cr。

6. $ git clone

新来的实习生必须先将clone整个项目来到当地,才能进行进一步的变更调查。

当然,实际工作中也没有人这样用。因为每个公司都有自己的包装工具。但是如果在Github上做开源项目,就可以用了。(莎士比亚、温斯顿、开源、开源、开源、开源、开源)

7. $ git pull

小智提交新代码后,领导要审核,请尝试用git pull抽取最新代码。

事实上,

Git pull=fetch merge

8. $ git fetch

git fetch此操作是将数据从远程库下载到本地库,但工作区中的文件不会更新。

还有,要谈get merge,我们得先谈季度。

Merge是git pull的默认选项,合并还有另一种方法:rebase,中文叫马桶。

9. $ git rebase

rebase在整合分叉的历史方面发挥着更多的作用,一个季度的所有修改都可以移动到另一个季度。

分支和合并

首先,让我们看一下分支的一些基本任务。

与Ls类似,

10. 查看分支:

$ git branch列出了当前所有分支。

Git branch -v可以显示更多信息。

11. 创建分支:

$ git branch branchName

如果

12. 切换分支:

$ git checkout branchName有季度,则一定会有合并。

13. 合并分支:

$ git merge branchName合并可能会发生冲突。什么时候能有冲突?请执行以下操作之一:

在同一个文件的同一个位置修改时。

因为Git会努力把你换到别的地方。但是如果在同一个地方换了,就没办法了。只能交给程序员手动处理。(大卫亚设)。

当然,每条命令都无限扩展,这篇文章不可能包罗万象,所以我推荐这重磅上我姐姐精心挑选的三大学习资源。大家可以自己享受~

学习资源

Git帮助

事实上,我个人最常用的是git help

真的很方便,很好用!

例如,git help pull:

首先介绍有哪些参数,然后description详细说明了它的工作原理,下面有图解,木头太香了!

但是这种方式更像是电子表格。当你已经知道这个命令的时候,只要忘了它的用法就去找。(约翰f肯尼迪)。

如果你想系统地学习,下面的更适合你。

Pro Git

这本书是强力推荐的!

Pro Git这本书深入阐述了Git的基本用法、高级用法,最后是Git的原理,非常细致全面。

书的电子版也可以直接从网站下载。

英文版本:

中文版本:

玩游戏

Practice makes perfect!

宝藏资源推荐:Git练习的游戏

项目:

网址:

我熟悉通过小游戏(如vim的操作)练习的很多工具。还是推荐这种方式。不是剧透,大家自己去探险吧~

1.《Git 看这一篇就够了》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《Git 看这一篇就够了》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/keji/1954920.html

上一篇

markdown在线编辑器,干货看这篇!所见即所得的开源跨平台 Markdown 编辑器

下一篇

【ipad软件推荐】专题在 iPad 9 上玩了 10 余款 app 后,告诉你新品值不值得买

关于csdn网站我想说如何利用GitHub Pages快速构建免费网站?

  • 关于csdn网站我想说如何利用GitHub Pages快速构建免费网站?
  • 关于csdn网站我想说如何利用GitHub Pages快速构建免费网站?
  • 关于csdn网站我想说如何利用GitHub Pages快速构建免费网站?

关于csdn网站我想说新手程序员学习编程最爱用的10个网站,超实用

  • 关于csdn网站我想说新手程序员学习编程最爱用的10个网站,超实用
  • 关于csdn网站我想说新手程序员学习编程最爱用的10个网站,超实用
  • 关于csdn网站我想说新手程序员学习编程最爱用的10个网站,超实用

关于csdn网站我想说带你全面认识 Linux

  • 关于csdn网站我想说带你全面认识 Linux
  • 关于csdn网站我想说带你全面认识 Linux
  • 关于csdn网站我想说带你全面认识 Linux

关于csdn网站我想说硬核!30 张图解 HTTP 常见的面试题

  • 关于csdn网站我想说硬核!30 张图解 HTTP 常见的面试题
  • 关于csdn网站我想说硬核!30 张图解 HTTP 常见的面试题
  • 关于csdn网站我想说硬核!30 张图解 HTTP 常见的面试题

关于csdn网站我想说2019年度CSDN博客之星TOP10榜单揭晓,你上榜了吗?

  • 关于csdn网站我想说2019年度CSDN博客之星TOP10榜单揭晓,你上榜了吗?
  • 关于csdn网站我想说2019年度CSDN博客之星TOP10榜单揭晓,你上榜了吗?
  • 关于csdn网站我想说2019年度CSDN博客之星TOP10榜单揭晓,你上榜了吗?
关于csdn网站我想说漫谈大型网站架构

关于csdn网站我想说漫谈大型网站架构

csdn网站相关介绍,[编辑]结构无处不在。今天,我们邀请《大型分布式网站架构设计与实践》一书的作者陈康贤分享对大型网站结构的理解。另外,我正在采访陈康贤。如果读者有什么问题,请在本文下面的评论中留言,或邮寄CSDN编辑钱...

关于csdn网站我想说12个免费学习编程的网站

关于csdn网站我想说12个免费学习编程的网站

csdn网站相关介绍,曾经编程是极客们最讨厌的事情,但今天事情不再是这样了。(威廉莎士比亚,泰姆派斯特,编程名言)大多数企业家、自由职业者和营销人员都告诉我们编程改变命运。在过去的几年里,我在学习编程方法,编程也帮助我成为...

关于csdn网站我想说看完这篇 HTTP,跟面试官扯皮就没问题了

  • 关于csdn网站我想说看完这篇 HTTP,跟面试官扯皮就没问题了
  • 关于csdn网站我想说看完这篇 HTTP,跟面试官扯皮就没问题了
  • 关于csdn网站我想说看完这篇 HTTP,跟面试官扯皮就没问题了