Git
文章平均质量分 93
车子 chezi
乐于开源,善于分享。死磕自己,方便大家。广泛查阅,独立思考。持续琢磨,自成一家。
展开
-
取得 Git 仓库 —— Git 学习笔记 04
取得 Git 仓库 —— Git 学习笔记 04我认为, Git 的学习分为两大块:一是工作区、索引、本地版本库之间的交互;二是本地版本库和远程版本库之间的交互。第一块是基础,第二块是难点。下面,我们就围绕着第一部分内容来学习,先不考虑远程仓库,只考虑本地仓库。怎样取得项目的 Git 仓库?有两种取得 Git 项目仓库的方法。第一种是在本地创建一个新的仓库,第二种是把其他地方的...原创 2018-07-29 00:14:45 · 833 阅读 · 0 评论 -
Git 分支的创建与切换 —— Git 学习笔记 14
Git 分支的创建与切换文章目录Git 分支的创建与切换Git 分支的本质分支创建分支切换参考资料几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响主线的开发。 在很多版本控制系统中,这是一个略微低效的过程 —— 常常需要完全创建一个源代码目录的副本。对于大项目来说,这样的过程会耗费很多时间。有人把 Git 的分支模型称为它的“必杀技特...原创 2018-09-25 22:45:54 · 1009 阅读 · 0 评论 -
Git 的工作区、暂存区、版本库—— Git 学习笔记 15
Git 的工作区、暂存区、版本库大家都知道,在 Git 系统中有 “三棵树” 的概念。注意:“树” 在这里的意思是 “文件集合”,而不是指特定的数据结构。基本概念树用途HEAD(版本库)上一次提交的快照,下一次提交的父结点Index(暂存区)预期的下一次提交的快照Working Directory(工作区)沙盒HEADHEAD 是当前分支引...原创 2018-10-05 10:22:18 · 907 阅读 · 0 评论 -
git checkout 命令详解—— Git 学习笔记 16
git checkout 命令详解概览git checkout 这条命令的常用格式如下:用法一git checkout [<commit>] [--] <paths>用于拿暂存区的文件覆盖工作区的文件,或者用指定提交中的文件覆盖暂存区和工作区中对应的文件。用法二git checkout <branch>用于切换分支。用法三git chec...原创 2018-10-06 20:04:10 · 11436 阅读 · 0 评论 -
三路合并 —— Git 学习笔记 17
三路合并和其他版本控制系统不同,Git 提供的合并冲突解决方案并不会聪明过头,不会尝试自动将所有问题都解决。Git 的设计哲学是智能判断一个合并是否可以非常容易地自动完成,如果自动化方案不可行,就不要自作聪明地去尝试解决它,最好让用户自己去解决合并冲突。文件层面通过比较共同的祖先(base)、当前分支(ours),待合并分支(theirs),Git 采用三路合并算法生成合并结果。该算法至少在...原创 2018-10-14 19:28:21 · 5080 阅读 · 5 评论 -
git cherry-pick 详解 —— Git 学习笔记 18
git cherry-pick 详解初识 git cherry-pick(拣选)拣选会提取某次提交的补丁,之后尝试将其重新应用到当前分支上。 这种方式在你只想引入特性分支中的某个提交时很有用。假设你的项目提交历史如下:如果你希望将提交 e43a6 拉取到 master 分支,你可以运行:# 当前处于 master 分支$ git cherry-pick e43a6Finished...原创 2018-10-28 12:23:08 · 44960 阅读 · 0 评论 -
git rebase(变基)—— Git 学习笔记 19
git rebase(变基)认识 git rebase假设你现在基于远程分支"origin",创建一个叫"mywork"的分支。$ git checkout -b mywork origin现在我们在 mywork 分支做一些修改,生成两个提交(C5和C6).但是与此同时,有些人也在"origin"分支上做了一些修改并且做了提交了。你可以用"fetch"命令把"origin"分支...原创 2018-10-28 23:09:01 · 688 阅读 · 0 评论 -
远程仓库与 fetch 命令——Git 学习笔记 20
远程仓库是指托管在因特网或其他网络(比如局域网)中的版本库。 你可以有好几个远程仓库,通常有些仓库对你只读,有些则对你可读可写。 与他人协作涉及管理远程仓库以及根据需要推送或拉取数据。查看远程仓库如果想查看你已经配置的远程仓库服务器,可以运行 git remote 命令。它会列出你指定的每一个远程服务器的简写。 如果你已经克隆了仓库,那么至少应该能看到 origin -—— 这是 Git 给你...原创 2018-11-04 11:41:05 · 1286 阅读 · 0 评论 -
git checkout 对工作目录的影响 —— Git 学习笔记 21
git checkout 对工作目录的影响问题的提出本文要讨论的是:当我们用git checkout <branch_name>命令切换分支时,如果有未提交的修改,会发生什么?如果当前工作区的状态是“clean”,那么切换到其他分支是很容易的。但是,如果有未提交的修改,也许就不能顺利地切换过去,Git 会给出错误信息。例如: $ git branch bug/pr-...原创 2018-11-16 22:50:07 · 2482 阅读 · 0 评论 -
图解远程版本库开发周期 —— Git 学习笔记 22
图解远程版本库开发周期文章目录图解远程版本库开发周期克隆版本库快进推送非快进推送fetch 命令merge 命令push 命令参考资料克隆版本库假设服务器上有一个简单的版本库:最近的 2 次提交用 A 和 B 表示。这时候,你把这个版本库克隆到了本地:克隆之后,我们看看这个克隆到本地的版本库都有些什么:原始版本库中的所有提交都复制到克隆版本库。克隆版本库中有一个名为 orig...原创 2018-11-25 11:25:50 · 496 阅读 · 0 评论 -
Git 中的对象模型和文件的详细视图 —— Git 学习笔记 13
Git 中的对象模型和文件的详细视图文章目录Git 中的对象模型和文件的详细视图初始状态编辑一个文件之后暂存文件后提交之后参考资料本文将用几幅图来可视化一个叫file1的文件从修改到暂存,再到提交的整个过程。相信会对你理解 Git 有一些帮助。初始状态初始状态如下图所示:可以看到,工作目录包含file1和file2两个文件,分别包含内容 “foo” 和 “bar”.除了工作目录下的f...原创 2018-09-23 22:08:52 · 653 阅读 · 0 评论 -
Git 的特点—— Git 学习笔记 02
Git 简史Git 的特点直接记录快照,而非差异比较近乎所有操作都是本地执行保证完整性一般只添加数据参考资料Git 简史众所周知,Linux 内核开源项目有着为数众多的参与者。这么多人在世界各地为 Linux 编写代码,那Linux 的代码是如何管理的呢?事实是在 2002 年以前,世界各地的开发者把源代码通过 diff 的方式发给 Linus,然后由 Li...原创 2018-07-22 20:34:37 · 1354 阅读 · 3 评论 -
集中式版本控制与分布式版本控制——Git 学习笔记01
什么是版本控制如果你用 Microsoft Word 写过东西,那你八成会有这样的经历:想删除一段文字,又怕将来这段文字有用,怎么办呢?有一个办法,先把当前文件“另存为”一个文件,然后继续改,改到某个程度,再“另存为”一个文件。就这样改着、存着……最后你的 Word 文档变成了这样:过了几天,你想找回被删除的文字,但是已经记不清保存在哪个文件了,只能挨个去找。真麻烦,眼睛都花了。看...原创 2018-07-22 12:26:58 · 3110 阅读 · 2 评论 -
Git 的安装与初次使用 —— Git 学习笔记 03
Git 的安装与初次使用 —— Git 学习笔记 03Git 的安装与初次使用 —— Git 学习笔记 03安装 Git在 Linux 上安装在 Windows 上安装初次运行 Git 前的配置配置用户信息查看配置信息获取帮助安装 GitGit 是一个跨平台的软件,不管是 Windows、Linux,还是 Mac,都有自己的安装包。在 Linu...原创 2018-07-27 22:08:11 · 1121 阅读 · 0 评论 -
忽略某些文件 —— Git 学习笔记 05
忽略某些文件忽略某些文件通过.gitignore文件其他规则源如何选择规则源参考资料对于某些文件,我们不希望把它们纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。通常它们都是些自动生成的文件,比如日志文件、编译过程中创建的临时文件等。通过.gitignore文件假设我们要忽略 lib.a 文件,那我们可以在 lib.a 所在目录下创建一个名为 .g...原创 2018-08-05 23:12:29 · 833 阅读 · 0 评论 -
git status 命令总结 —— Git 学习笔记 06
当执行 git status 的时候,返回结果大致可分为3个部分:拟提交的变更:这是已经放入暂存区,准备使用 git commit 命令提交的变更未暂存的变更:这是工作目录和暂存区快照之间存在差异的文件列表未跟踪的文件:这类文件对于 Git 系统来说是未知的,也是可以被忽略的还有一种简洁的输出格式,即添加 --short 选项,例如$ git status --short D...原创 2018-08-12 22:03:37 · 4248 阅读 · 0 评论 -
git reset 命令详解(一)—— Git 学习笔记 07
git reset 命令详解(一)简而言之,git reset 命令是用来将当前 branch 重置到另外一个 commit 的,这个动作可能同时影响到 index 以及 work directory.先举个例子,来一个感性的认识。下面这两条命令让 hotfix 分支向后回退两个提交。git checkout hotfixgit reset HEAD~2hotfix 分支...原创 2018-08-19 22:35:28 · 42848 阅读 · 12 评论 -
git reset 命令详解(二)—— Git 学习笔记 08
git reset 命令详解(二)上一篇博文git reset 命令详解(一)讲了 git reset 命令的基本原理和用法,这篇博文谈一谈 git reset 的另一种用法——后面跟一个路径(或文件)。恢复索引中的文件到某个版本假设版本库中是文件file.txt的V1版本,HEAD、Index和工作目录都和版本库一致。这时候修改了file.txt文件,并把它(V2版本)加入Ind...原创 2018-08-22 22:14:43 · 2128 阅读 · 1 评论 -
查看提交历史 —— Git 学习笔记 11
查看提交历史查看提交历史不带任何选项的git log-p选项--stat 选项--pretty=oneline选项--pretty=format选项git log常用选项列表参考资料在提交了若干更新,又或者克隆了某个项目之后,你也许想回顾下提交历史。 完成这个任务最简单而又有效的 工具是 git log 命令。接下来的例子会用一个用于演示的 simple...原创 2018-09-07 20:36:29 · 576 阅读 · 0 评论 -
撤销操作 —— Git 学习笔记 12
撤销操作写在前面:有些撤消操作是不可逆的。 这是在使用 Git 的过程中,会因为操作失误而导致之前的工作丢失的少有的几个地方之一。修改最新提交有时候我们提交完了才发现漏掉了几个文件没有添加,或者提交信息写错了。 此时,可以运行带有 --amend 选 项的提交命令尝试重新提交:$ git commit --amend如果自上次提交以来你还未做任何修改(例如,在上次提交后马...原创 2018-09-07 22:54:24 · 517 阅读 · 0 评论 -
git checkout 和 git reset 的区别 —— Git 学习笔记 09
git checkout 和 git reset 的区别git checkout 和 git reset 有时候让人困惑,因为它们的表现很相似。本文浅析二者之异同。后接分支名称运行 git checkout [branch] 与运行 git reset --hard [branch] 非常相似,都会更新所有的三棵树(关于三棵树可以参考我的博文 git reset 命令详解),使其看...原创 2018-09-02 11:36:43 · 27925 阅读 · 3 评论 -
记录每次更新到仓库 —— Git 学习笔记 10
记录每次更新到仓库 文件的状态三个区域检查当前文件状态跟踪新文件取消跟踪(un-tracking)文件重新跟踪(re-tracking)文件暂存已修改文件忽略某些文件查看已暂存和未暂存的修改提交更新跳过暂存区删除文件移动文件参考资料咱们接着很多天以前的 取得Git仓库 这篇文章继续说。文件的状态不管是通过哪种方法,现在我们已经有了一个仓...原创 2018-09-02 22:09:53 · 857 阅读 · 0 评论 -
fetch 与引用规格(refspec)—— Git 学习笔记 23
fetch 与引用规格(refspec)本文想讨论 fetch 命令的细节。假设我们用命令添加了一个远程版本库:$ git remote add origin https://github.com/schacon/simplegit-progit上述命令会在 .git/config 文件中添加几行,并在其中指定远程版本库名称(origin)、URL 和一个用于获取(fetch)操作的引用...原创 2018-11-25 11:47:59 · 1476 阅读 · 0 评论