作者|素帝本治
书篇|屠民
头部地图|从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