随笔分类 -  Git

Git-补丁文件交互
摘要:版本库间的交互是通过git push和/或git pull命令实现的,这是Git最主要的交互模式,但并不是全部。使用补丁文件是另外一种交互方式,适用于参与者众多的大型项目进行分布式开发。 创建补丁 Git提供了将提交批量转换为补丁文件的命令:git format patch。该命令后面的参数是一个版 阅读全文
posted @ 2018-02-06 23:29 uetucci 阅读(482) 评论(0) 推荐(0)
Git-远程版本库
摘要:Git作为分布式版本库控制系统,每个人都是本地版本库的主人,可以在本地的版本库中随心所欲地创建分支和里程碑。当需要多人协作时,问题就出现了: 如何避免因为用户把所有的本地分支都推送到共享版本库,从而造成共享版本库上分支的混乱? 如何避免不同用户针对不同特性开发创建了相同名字的分支而造成分支名称的冲突 阅读全文
posted @ 2018-02-05 23:34 uetucci 阅读(399) 评论(0) 推荐(0)
Git-Git分支
摘要:代码管理之殇 分支是代码管理的利器。如果没有有效的分支管理,代码管理就适应不了复杂的开发过程和项目的需要。在实际的项目实践中,单一分支的单线开发模式还远远不够,因为: 成功的软件项目大多要经过多个开发周期,发布多个软件版本。每个已经发布的版本都可能发现bug,这就需要对历史版本进行更改。 有前瞻性的 阅读全文
posted @ 2018-02-01 22:43 uetucci 阅读(222) 评论(0) 推荐(0)
Git-Git里程碑
摘要:里程碑即Tag,是人为对提交进行的命名。这和Git的提交ID是否太长无关,使用任何数字版本号无论长短,都没有使用一个直观的表意的字符串来得方便。例如:用里程碑名称“v2.1”对应于软件的2.1发布版本就比使用提交ID要直观得多。 使用git describe命令显示里程碑和提交ID的组合来代表软件的 阅读全文
posted @ 2018-01-29 22:55 uetucci 阅读(683) 评论(0) 推荐(2)
Git-冲突解决
摘要:拉回操作中的合并 用户user1执行git pull操作解决非快进式推送问题似乎非常的简单,就好像直接把共享版本库中最新提交直接拉回到本地,然后就可以推送了,其他好像什么都没有发生一样。真的是这样么? 用户user1向共享版本库推送时,因为user2强制推送已经改变了共享版本库中的提交状态,导致us 阅读全文
posted @ 2018-01-24 23:03 uetucci 阅读(612) 评论(0) 推荐(0)
Git-Git协同与工作协同
摘要:Git支持的协议 首先来看看数据交换需要使用的协议。 Git提供了丰富的协议支持,包括:SSH、GIT、HTTP、HTTPS、FTP、FTPS、RSYNC及前面已经看到的本地协议等。各种不同协议的URL写法如表15 1所示。 |协议名称|语法格式|说明| | | | | |SSH协议(1)|ssh: 阅读全文
posted @ 2018-01-22 22:32 uetucci 阅读(209) 评论(0) 推荐(0)
Git-Git库管理
摘要:对象和引用哪里去了? 从GitHub上克隆一个示例版本库,这个版本库在“历史穿梭”一章就已经克隆过一次了,现在要重新克隆一份。为了和原来的克隆相区别,克隆到另外的目录。执行下面的命令。 进入克隆的版本库,使用git show ref命令看看所含的引用。 其中以refs/heads/开头的是分支;以r 阅读全文
posted @ 2018-01-18 23:12 uetucci 阅读(260) 评论(0) 推荐(0)
Git-Git克隆
摘要:鸡蛋不装在一个篮子里 Git的版本库目录和工作区在一起,因此存在一损俱损的问题,即如果删除一个项目的工作区,同时也会把这个项目的版本库删除掉。一个项目仅在一个工作区中维护太危险了,如果有两个工作区就会好很多。 上图中一个项目使用了两个版本库进行维护,两个版本库之间通过拉回(PULL)和/或推送(PU 阅读全文
posted @ 2018-01-17 22:59 uetucci 阅读(266) 评论(0) 推荐(0)
Git-改变历史
摘要:悔棋 在日常的Git操作中,会经常出现这样的状况,输入git commit命令刚刚敲下回车键就后悔了:可能是提交说明中出现了错别字,或者有文件忘记提交,或者有的修改不应该提交,诸如此类。 Git提供了“悔棋”的操作,甚至因为“单步悔棋”是如此经常的发生,乃至于Git提供了一个简洁的操作——修补式提交 阅读全文
posted @ 2018-01-11 23:10 uetucci 阅读(271) 评论(0) 推荐(0)
Git-历史穿梭
摘要:图形工具:gitk gitk是最早实现的一个图形化的Git版本库浏览器软件,基于tcl/tk实现,因此gitk非常简洁,本身就是一个1万多行的tcl脚本写成的。gitk的代码已经和Git的代码放在同一个版本库中,gitk随Git一同发布,不用特别的安装即可运行。gitk可以显示提交的分支图,可以显示 阅读全文
posted @ 2018-01-10 00:20 uetucci 阅读(313) 评论(0) 推荐(0)
Git-Git基本操作
摘要:先来合个影 马上就要和之前实践遗留的数据告别了,告别之前是不是要留个影呢?在Git里,“留影”用的命令叫做tag,更加专业的术语叫做“里程碑”(打tag,或打标签)。 通过记录提交ID(或者创建Tag对象)来为当前版本库状态进行“留影”。 留过影之后,可以执行git describe命令显示当前版本 阅读全文
posted @ 2018-01-06 00:33 uetucci 阅读(231) 评论(0) 推荐(0)
GIt-恢复进度
摘要:继续暂存区未完成的实践 经过了前面的实践,现在DEMO版本库应该处于master分支上,看看是不是这样。 还记得在之前“Git暂存区”的结尾,是如何保存进度的么?翻回去看一下,用的是git stash命令。这个命令用于保存当前进度,也是恢复进度要用的命令。 查看保存的进度用命令git stash l 阅读全文
posted @ 2018-01-03 23:51 uetucci 阅读(297) 评论(0) 推荐(0)
Git-GIt检出
摘要:实际上在执行重置命令的时候没有使用任何参数对所要重置的分支名进行设置,这是因为重置命名实际上所针对的是头指针HEAD。之所以没有改变HEAD的内容是因为HEAD指向了一个引用refs/heads/master,所以重置命令体现为分支“游标”的变更,HEAD本身一直指向的是refs/heads/mas 阅读全文
posted @ 2018-01-02 23:58 uetucci 阅读(226) 评论(0) 推荐(0)
GIt-重置
摘要:master分支在版本库的引用目录(.git/refs)中体现为一个引用文件.git/refs/heads/master,其内容就是分支中最新提交的提交ID。 通过对提交本身数据结构的分析,看到提交可以通过到父提交的关联实现对提交历史的追溯。注意:下面的git log命令中使用了 oneline参数 阅读全文
posted @ 2018-01-02 22:37 uetucci 阅读(291) 评论(0) 推荐(0)
Git-对象
摘要:Git对象库探秘 通过查看日志的想尽输出,我们会惊讶地看到非常多的"魔幻数字",这些"魔幻数字"实际上是SHA1哈希值。 一个提交中居然包含了三个SHA1哈希值表示的对象ID。 commit e695606fc5e31b2ff9038a48a3d363f4c21a3d86:这是本次提交的唯一标识。 阅读全文
posted @ 2017-12-30 23:51 uetucci 阅读(312) 评论(0) 推荐(0)
Git-暂存区
摘要:在上一节的实践中,DEMO版本库建立了两次提交,可以用 git log 查看提交日志(附加的 stat 参数可以看到每次提交的文件变更统计。) 可以看到第一次提交对文件welcome.txt有一行的变更,而第二次提交因为是使用了 allow empty参数进行的一次空提交,所以提交说明中看不到任何对 阅读全文
posted @ 2017-12-30 00:52 uetucci 阅读(200) 评论(0) 推荐(0)
Git-Git初始化
摘要:创建版本库及第一次提交 通过如下操作来查看一下您的Git版本。 在开始 Git 之旅之前,我们需要设置一下 Git 的配置变量,这是一次行的工作。即这些设置会在全局文件(用户目录下的.gitconfig)或系统文件(如/etc/gitconfig)中做永久记录。 (1) 告诉 Git 当前用户的姓名 阅读全文
posted @ 2017-12-29 00:10 uetucci 阅读(349) 评论(0) 推荐(0)
Git-起步
摘要:Git命令行 只要输入git,Git就会不带任何参数地列出它的选项和最常用的子命令。 要得到一个完整的git子命令列表,可以输入git help all 显示版本号 git version 每个git子命令的文档都可以通过使用git help subcommand、git help subcomma 阅读全文
posted @ 2017-12-21 22:06 uetucci 阅读(122) 评论(0) 推荐(0)