git命令详解(一)
今天我们来详解一下git的各种命令,此为git的第一篇,后续还会有好几篇,希望大家看了能有所进步
git commit
git 仓库中的提交记录保存的是你的目录下所有文件的快照,就像是把整个目录复制,然后再粘贴一样,但比复制粘贴优雅许多!
git 希望提交记录尽可能地轻量,因此在你每次进行提交时,它并不会盲目地复制整个目录。条件允许的情况下,它会将当前版本与仓库中的上一个版本进行对比,并把所有的差异打包到一起作为一个提交记录。
git 还保存了提交的历史记录。这也是为什么大多数提交记录的上面都有父节点的原因 。对于项目组的成员来说,维护提交历史对大家都有好处。
关于提交记录太深入的东西咱们就不再继续探讨了,现在你可以把提交记录看作是项目的快照。提交记录非常轻量,可以快速地在这些提交记录之间切换!
git branch
git 的分支也非常轻量。它们只是简单地指向某个提交纪录 —— 仅此而已。所以许多 git 爱好者传颂:
早建分支!多用分支!
这是因为即使创建再多分的支也不会造成储存或内存上的开销,并且按逻辑分解工作到不同的分支要比维护那些特别臃肿的分支简单多了。
只要记住使用分支其实就相当于在说:“我想基于这个提交以及它所有的父提交进行新的工作。”
分支与合并
将两个分支合并到一起。就是说我们新建一个分支,在其上开发某个新功能,开发完成后再合并回主线。
咱们先来看一下第一种方法 —— git merge
。在 git 中合并两个分支时会产生一个特殊的提交记录,它有两个父节点。翻译成自然语言相当于:“我要把这两个父节点本身及它们所有的祖先都包含进来。”
1.我们准备了两个分支,每个分支上各有一个独有的提交。这意味着没有一个分支包含了我们修改的所有内容。咱们通过合并这两个分支来解决这个问题。
我们要把 bugfix
合并到 master
里
哇哦!看见了吗?首先,master
现在指向了一个拥有两个父节点的提交记录。假如从 master
开始沿着箭头向上看,在到达起点的路上会经过所有的提交记录。这意味着 master
包含了对代码库的所有修改。