十分钟掌握Git

简介: 首先要理清概念Git:什么意思英文直译过来应该是:饭桶,烂人,废物 。由此可猜测当时git的作者可能是谦虚,自喻为“烂人”,认为自己是个自负的混混。当然也可能是因为作者原来用的BitKeeper不让用了,导致作者自己开发了git,他气不过,要骂人BitKeeper。

首先要理清概念

Git:什么意思
英文直译过来应该是:饭桶,烂人,废物 。由此可猜测当时git的作者可能是谦虚,自喻为“烂人”,认为自己是个自负的混混。当然也可能是因为作者原来用的BitKeeper不让用了,导致作者自己开发了git,他气不过,要骂人BitKeeper。

也有人认为,git同音get,是“获得,得到” 的意思,帮助别人获得。
当然也同音gay,同性恋???

也可能是guy in there的缩写,and so on

what ever,管他呢 知乎一群吃饱了的讨论过,你可以看看这里https://www.zhihu.com/question/54939657

名字可以看出,码农多数是很Git(废物?扯淡?艹蛋,吃饱了撑的,无聊……)的,所以说兄弟你这样性格,找不到对象啊!

but,我们码农写代码,想要一个什么样的工具:

让我们来个女神幻想:

  1. 应该是不依赖互联网等,每个人独立开发,互不牵扯,合适的时间(我想什么时间什么时间)互相合并/同步一下对方的代码,合并时记录对方的操作(这样可以在对方做错的时候,骂他and嘲讽他(这样做,好像会使自己感觉牛逼or开心??? 谁知道呢))
  2. 应该方便我定义不同版本的代码,方便发布产品的1,2,3版
  3. 应该方便我定义不同的,处于变化的代码,方便开发,测试,发布等变态需求
  4. 最重要的,工具应该自动化,别让我经常干预,我嫌烦,工具一定要简单,我懒得学!!!
  5. 要标准化,全世界都一样才好。标注化会带来很多意想不到的好处!

Git的作用定义:

分布式文件版本控制系统

  1. 分布式:表示各个节点权力相同,也就是不需要服务器,每个人都能在自己电脑开发,开发者定时互相同步代码就行了。(好像满足幻想1了)
    2.支持标签,随时随地定义你想要的标签。(好像满足幻想2了)
    3.支持分支,分支就是不同的时时会变化的一坨代码。(好像满足幻想3了)
    4.git操作好复杂,还基于命令行的,我喜欢图形界面化的。(不满足,so,git不是女神)
    5.满足

凑合用吧,要什么自行车,还要手表?

基础知识

1.git是 直接记录快照,而非差异

我理解的快照就是文件在特定时间点的拷贝吧,1点的时候文件内容是123,2点的时候变成了1234,那么1点取个快照就是 (文件:1点+123)

2.近乎所有操作都是本地执行

git是分布式的,只有两台不同的计算机互相同步文件的时候,需要网络,其他操作都可以本机进行,只访问本地文件和资源。git本身分为 工作目录+暂存区+仓库,分布式代表了,git在每一台电脑上都是这样,一摸一样。也就是说,你平时的操作都是操作,工作目录+暂存区。源文件改变了,就提交到缓存。只有不同电脑互相同步代码时,另一台电脑的git充当了仓库(服务器)的角色。

  1. git保证完整性

Git 中所有数据在存储前都计算校验和,然后以校验和来引用。 这意味着不可能在 Git 不知情时更改任何文件内容或目录内容。 这个功能建构在 Git 底层,是构成 Git 哲学不可或缺的部分。 若你在传送过程中丢失信息或损坏文件,Git 就能发现。
Git 用以计算校验和的机制叫做 SHA-1 散列(hash,哈希)。 这是一个由 40 个十六进制字符(0-9 和 a-f)组成字符串,基于 Git 中文件的内容或目录结构计算出来。 SHA-1 哈希看起来是这样:24b9da6552252987aa493b52f8696cd6d3b00373
Git 中使用这种哈希值的情况很多,你将经常看到这种哈希值。 实际上,Git 数据库中保存的信息都是以文件内容的哈希值来索引,而不是文件名。

4.git一般只添加数据

为防止丢失数据,最好的方式就是不要提供删除功能。只添加就好了。所以用git,你的代码基本不会丢!

  1. 了解git定义源文件的三种状态

1.已经提交 committed
2.已经修改 modified
3.已经暂存 staged
已提交表示数据已经安全的保存在本地数据库中。 已修改表示修改了文件,但还没保存到数据库中。 已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。

img_1f39d8213b0c005c004ba5066478de75.png
三种状态

基本的 Git 工作流程如下:

1.在工作目录中修改文件。
2.暂存文件,将文件的快照放入暂存区域。
3.提交更新,找到暂存区域的文件,将快照永久性存储到 Git 仓库目录。

分支

分支的本质是一个指针,指向提交对象的可变指针。https://git-scm.com/book/zh/v2/Git-%E5%88%86%E6%94%AF-%E5%88%86%E6%94%AF%E7%AE%80%E4%BB%8B

命令行

这三个足够了,不懂的,不记得了就--help

$ git help <verb>
$ git <verb> --help
$ man git-<verb>

用不到命令行

假如你用IDEA开发,全鼠标就行了


img_d8f207b93fb9b525f26f8f3075f1ee2c.png

工具栏从左向右依次是:update更新,commit提交,compare比较,history历史,evert撤销


img_ff93d3a819f64faf31aad18182ae93e5.png

右键点击你的项目,可以看到git的所有设置和操作
img_cca3f07dc1ee0ec1880289d910300963.png

右下角有分支等处理


img_077813a7dc8c634eef3d6dbe504ee32d.png

菜单栏有其他任何你想要的版本控制设置

但是,我啰嗦,常用git命令

服务器,或者不同操作系统切换的时候,命令行是最方便的。也看的出作者当时是多么的鸡贼(机制and偷懒and不要脸)

--初始化
git init
--添加文件,让git开始追踪文件的状态
git add * 
例如:
git add *.c
git add test.txt
--提交
git commit -m "备注信息" 
--克隆一个库
git clone https//xxxx 你的地址 修改名称
例子:克隆并重命名 git clone https://github.com/libgit2/libgit2 mylibgit
--检测文件现在的状态
git status
-- 忽略文件
编辑.gitignore文件,把你想忽略的文件/目录 写到里边,支持正则
--查看不同
git diff
--移除文件
git rm 文件
源文件保存,只是移除git控制了
例子:
git rm a.txt
git rm \*
--查看提交历史
git log
--查看远程仓库版本
git remote -v
--从远程仓库拉取或抓取
git fetch 仓库名
--推送到仓库
git push 仓库名 分支
--列出标签
git tag
--不想写了,反正你也记不住,这东西就得用,不用背过也忘了

最后,提升

如果你看完这个文章,发现我说的,你本来就都会,没有收获,恭喜你,又浪费时间了(都会你看什么,是不是吃饱了?)
这时候,你还想深入了解Git应该:
1.看官网文档,最详细,最权威,没有之一 。https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-Git-%E5%9F%BA%E7%A1%80
2.看源码。https://github.com/git/git
3.抱怨:源码有5万多次提交了。。。shit哦

拜拜!

相关文章
|
缓存 开发工具 git
十分钟学会git常用命令 | 一个demo文件,说明简单扼要
十分钟学会git常用命令 | 一个demo文件,说明简单扼要
十分钟学会git常用命令 | 一个demo文件,说明简单扼要
|
开发工具 git C++
十分钟了解 git 那些“不常用”命令(下)
本文主要是介绍 git 不常用 初期不太会用的命令,希望你看了能理解这些命令的使用,并在平时使用过程中一点点地刻意进行练习,逐步熟练并知道何时需要用到这些命令去解决你的问题。( 我也在不断熟练中)
108 0
十分钟了解 git 那些“不常用”命令(下)
|
开发工具 git
十分钟了解 git 那些“不常用”命令(上)
本文主要是介绍 git 不常用 初期不太会用的命令,希望你看了能理解这些命令的使用,并在平时使用过程中一点点地刻意进行练习,逐步熟练并知道何时需要用到这些命令去解决你的问题。( 我也在不断熟练中)
126 0
十分钟了解 git 那些“不常用”命令(上)
|
数据可视化 Linux 开发工具
十分钟入门学习git和githhub
git是一个版本控制系统
287 0
十分钟入门学习git和githhub
|
15天前
|
开发工具 git
git 常用命令
这些只是 Git 命令的一部分,Git 还有许多其他命令和选项,可根据具体需求进行深入学习和使用。熟练掌握这些命令能够帮助你更高效地管理代码版本和协作开发。
|
8天前
|
机器学习/深度学习 Shell 网络安全
【Git】Git 命令参考手册
Git 命令参考手册的扩展部分,包含了从基础操作到高级功能的全面讲解。
19 3
|
4月前
|
开发工具 git
【GIT 第二篇章】GIT常用命令
Git常用命令涵盖初始化、状态管理、提交、分支处理、远程操作等关键流程。`git init`启动本地仓库,`git clone`下载远程仓库。通过`git status`和`git diff`检查工作状态与差异。利用`git add`暂存文件,`git commit`保存更改。借助`git branch`、`git checkout`、`git merge`和`git rebase`管理分支。使用`git fetch`、`git pull`和`git push`同步远程仓库。通过`git reset`、`git revert`和`git checkout`实现版本回退。
72 0
|
1月前
|
缓存 Java Shell
[Git]入门及其常用命令
本文介绍了 Git 的基本概念和常用命令,包括配置、分支管理、日志查看、版本回退等。特别讲解了如何部分拉取代码、暂存代码、删除日志等特殊需求的操作。通过实例和图解,帮助读者更好地理解和使用 Git。文章强调了 Git 的细节和注意事项,适合初学者和有一定基础的开发者参考。
48 1
[Git]入门及其常用命令
|
2月前
|
开发工具 git
git学习四:常用命令总结,包括创建基本命令,分支操作,合并命令,压缩命令,回溯历史命令,拉取命令
这篇文章是关于Git常用命令的总结,包括初始化配置、基本提交、分支操作、合并、压缩历史、推送和拉取远程仓库等操作的详细说明。
135 1
git学习四:常用命令总结,包括创建基本命令,分支操作,合并命令,压缩命令,回溯历史命令,拉取命令
|
1月前
|
开发工具 git 开发者