• / 41
  • 下载费用:10 金币  

Git使用简介ppt(1).ppt

关 键 词:
Git使用简介ppt(1).ppt
资源描述:
Git使用 简 介rainzha2015-03-29Git入 门• 直接 记录 快照,而非 记录 差异Git入 门• 文件的三种状 态 :已提交( committed),已修改( modified)和已 暂存( staged)Git入 门• 基本的 Git 工作流程如下:1.在工作目 录 中修改某些文件。2.对 修改后的文件 进 行快照,然后保存到 暂 存区域。3.提交更新,将保存在 暂 存区域的文件快照永久 转储 到 Git 目 录 中。Git起步• 初次运行前的配置 git config —global user.name user.email• 在工作目 录 中初始化新 仓库 git init• 在 现 有 项 目中克隆 git cloneGit基 础 -记录 每次更新到 仓库• 检查 当前文件状 态 git status• 跟踪新文件 git add• 暂 存已修改的文件 git add(这 是个多功能命令 )• 忽略某些文件 .gitingore• 查 看已 暂 存和未 暂 存的更新 git diff,git diff —staged• 提交更新 git commit -m “更新 说 明 ”• 跳 过 使用 暂 存区域 git commit -a• 移除文件 git rm• 移 动 文件 git mvGit基 础 -查 看提交 历 史• 查 看提交 历 史 git logGit基 础 -撤 销 操作• 修改最后一次提交 git commit —amend• 取消已 经暂 存的文件 git reset HEAD …• 取消 对 文件的修改 git checkout — …Git基 础 -远 程 仓库 的使用• 查 看当前的 远 程 库 git remote• 添加 远 程 仓库 git remote add• 从 远 程 仓库 抓取数据 git fetch [remote-name]• 推送数据到 远 程 仓库 git push [remote-name]• 查 看 远 程 仓库 信息 git remote show [remote-name]• 远 程 仓库 的 删 除和重命名Git分支 -何 谓 分支• 几乎每一种版本控制系 统 都以某种形式支持分支。使用分支意味着你可以从开 发 主 线 上分离开来,然后在不影响主 线 的同 时继续 工作。在很多版本控制系 统 中, 这 是个昂 贵 的 过 程,常常需要 创 建一个源代 码 目 录 的完整副本, 对 大型 项 目来 说 会花 费 很 长时间 。• 有人把 Git 的分支模型称 为 “必 杀 技特性 ”,而正是因 为 它,将 Git 从版本控制系 统 家族里区分出来。 Git 有何特 别 之 处 呢? Git 的分支可 谓 是 难 以置信的 轻 量 级 ,它的新建操作几乎可以在瞬 间 完成,并且在不同分支 间 切换 起来也差不多一 样 快。和 许 多其他版本控制系 统 不同, Git 鼓励在工作流程中 频 繁使用分支与合并,哪怕一天之内 进 行 许 多次都没有关系。理解分支的概念并熟 练 运用后,你才会意 识 到 为 什么 Git 是一个如此 强 大而独特的工具,并从此真正改 变 你的开 发 方式。Git分支 -何 谓 分支Git分支 -分支的新建与合并• 新建分支 (注: 还 有多种方法 )git branch • 切 换 到当前分支 git checkout Git分支 -分支的新建与合并• 在分支上提交 git commit• 切 换 回 master分支 git checkout masterGit分支 -分支的新建与合并• 在 master分支上提交 git commitGit分支 -分支的新建与合并• 这 和大多数版本控制系 统 形成了 鲜 明 对 比,它 们 管理分支大多采取备 份所有 项 目文件到特定目 录 的方式,所以根据 项 目文件数量和大小不同,可能花 费 的 时间 也会有相当大的差 别 ,快 则 几秒,慢 则 数分 钟 。而 Git 的 实现 与 项 目复 杂 度无关,它永 远 可以在几毫秒的 时间 内完成分支的 创 建和切 换 。同 时 ,因 为 每次提交 时 都 记录 了祖先信息(注:即 parent 对 象),将来要合并分支 时 , 寻 找恰当的合并基 础 (注:即共同祖先)的工作其 实 已 经 自然而然地 摆 在那里了,所以 实现 起来非常容易。 Git 鼓励开 发 者 频 繁使用分支,正是因 为 有着 这 些特性作保障。Git分支 -一个例子• 现 在 让 我 们 来看一个 简单 的分支与合并的例子, 实际 工作中大体也会用到 这样 的工作流程:1. 开 发 某个网站。2. 为实现 某个新的需求, 创 建一个分支。3. 在 这 个分支上开展工作。• 假 设 此 时 ,你突然接到一个 电话说 有个很 严 重的 问题 需要 紧 急修 补,那么可以按照下面的方式 处 理:1. 返回到原先已 经发 布到生 产 服 务 器上的分支。2. 为这 次 紧 急修 补 建立一个新分支,并在其中修复 问题 。3. 通 过测试 后,回到生 产 服 务 器所在的分支,将修 补 分支合并 进 来,然后再推送到生 产 服务 器上。4. 切 换 到之前 实现 新需求的分支, 继续 工作。Git分支 -一个例子• 假 设项 目当前的提交 历 史• 现 在你决定修 补问题 53,要新建并切 换 到 该 分支,运行 git checkout 并加上 -b 参数• 接着你开始 尝试 修复 问题 ,在提交了若干更新后Git分支 -一个例子• 现 在你就接到了那个网站 问题 的 紧 急 电话 ,需要 马 上修 补 。有了 Git ,我 们 就不需要同 时发 布 这 个 补 丁和 iss53 里作出的修改,也不需要在 创 建和 发 布 该补 丁到服 务 器之前花 费 大力气来复原 这 些修改。唯一需要的 仅仅 是切 换 回 master 分支。• 接下来,你得 进 行 紧 急修 补 。我 们创 建一个 紧 急修 补 分支 hotfix 来开展工作,直到搞定:Git分支 -一个例子• 现 在有必要作些 测试 ,确保修 补 是成功的,然后回到 master 分支并把它合并 进 来,然后 发 布到生 产 服 务 器。用 git merge 命令来 进 行合并:• 请 注意,合并 时 出 现 了 “Fast forward”的提示。由于当前 master 分支所在的提交 对象是要并入的 hotfix 分支的直接上游, Git 只需把 master 分支指 针 直接右移。 换 句话说 ,如果 顺 着一个分支走下去可以到达另一个分支的 话 ,那么 Git 在合并两者 时,只会 简单 地把指 针 右移,因 为这 种 单线 的 历 史分支不存在任何需要解决的分歧,所以 这 种合并 过 程可以称 为 快 进 ( Fast forward)。Git分支 -一个例子• 在那个超 级 重要的修 补发 布以后,你想要回到被打 扰 之前的工作。由于当前 hotfix 分支和 master 都指向相同的提交 对 象,所以 hotfix 已 经 完成了 历 史使命,可以 删 掉了。使用 git branch 的 -d 选项执 行删 除操作:Git分支 -一个例子• 值 得注意的是之前 hotfix 分支的修改内容尚未包含到 iss53 中来。如果需要 纳 入此次修 补 ,可以用 git merge master 把 master 分支合并到 iss53;或者等 iss53 完成之后,再将 iss53 分支中的更新并入 master。• 请 注意, 这 次合并操作的底 层实现 ,并不同于之前 hotfix 的并入方式。因 为这 次你的开 发历 史是从更早的地方开始分叉的。由于当前 master 分支所指向的提交 对 象( C4)并不是 iss53 分支的直接祖先, Git 不得不 进 行一些 额 外 处 理。就此例而言, Git 会用两个分支的末端( C4 和 C5)以及它 们 的共同祖先( C2) 进 行一次 简单 的三方合并 计 算。Git分支 -一个例子• 这 次, Git 没有 简单 地把分支指 针 右移,而是 对 三方合并后的 结 果重新做一个新的快照,并自 动创 建一个指向它的提交 对 象( C6)。 这个提交 对 象比 较 特殊,它有两个祖先( C4 和 C5)。• 值 得一提的是 Git 可以自己裁决哪个共同祖先才是最佳合并基 础 ; 这和 CVS 或 Subversion( 1.5 以后的版本)不同,它 们 需要开 发 者手工指定合并基 础 。所以此特性 让 Git 的合并操作比其他系 统 都要 简单 不少。Git分支 -一个例子• 有 时 候合并操作并不会如此 顺 利。如果在不同的分支中都修改了同一个文件的同一部分, Git 就无法干 净 地把两者合到一起(注: 逻辑 上说 , 这 种 问题 只能由人来裁决)。• Git 作了合并,但没有提交,它会停下来等你解决冲突。要看看哪些文件在合并 时发 生冲突,可以用 git status 查阅 。• 任何包含未解决冲突的文件都会以未合并( unmerged)的状 态 列出。 Git 会在有冲突的文件里加入 标 准的冲突解决 标记 ,可以通 过 它 们来手工定位并解决 这 些冲突。可以看到此文件包含 类 似下面 这样 的部分:Git分支 -一个例子• 可以看到 ======= 隔开的上半部分,是 HEAD(即 master 分支,在运行 merge 命令时 所切 换 到的分支)中的内容,下半部分是在 iss53 分支中的内容。解决冲突的 办 法无非是二者 选 其一或者由你 亲 自整合到一起。比如你可以通 过 把 这 段内容替 换为 下面 这样 来解决:• 这 个解决方案各采 纳 了两个分支中的一部分内容,而且我 还删 除了 这 些行。在解决了所有文件里的所有冲突后,运行 git add 将把它们标记为 已解决状 态 ( 译 注: 实际 上就是来一次快照保存到 暂 存区域。)。因 为 一旦暂 存,就表示冲突已 经 解决。如果你想用一个有 图 形界面的工具来解决 这 些 问题 ,不妨运行 git mergetool,它会 调 用一个可 视 化的合并工具并引 导 你解决所有冲突。• 退出合并工具以后, Git 会 询问 你合并是否成功。如果回答是,它会 为 你把相关文件 暂存起来,以表明状 态为 已解决。Git分支 -利用分支 进 行开 发 的工作流程• 长 期分支: 许 多使用 Git 的开 发 者都喜 欢 用 这 种方式来开展工作,比如 仅 在 master 分支中保留完全 稳 定的代 码 ,即已 经发 布或即将 发 布的代 码 。与此同 时 ,他 们还 有一个名 为 develop 的平行分支, 专门 用于后 续 的开 发 ,或 仅 用于 稳 定性 测试 — 当然并不是说 一定要 绝对稳 定,不 过 一旦 进 入某种 稳 定状 态 ,便可以把它合并到 master 里。 这样 ,在确保 这 些已完成的特性分支(短期分支,比如之前的 iss53 分支)能 够 通 过 所有测试 ,并且不会引入更多 错误 之后,就可以并到主干分支中,等待下一次的 发 布。• 在任何 规 模的 项 目中都可以使用特性( Topic)分支。一个特性分支是指一个短期的,用来 实现单 一特性或与其相关工作的分支。可能你在以前的版本控制系 统 里从未做 过类 似 这样 的事情,因 为 通常 创 建与合并分支消耗太大。然而在 Git 中,一天之内建立、使用、合并再 删 除多个分支是常 见 的事。• 我 们 在上 节 的例子里已 经见过这 种用法了。我 们创 建了 iss53 和 hotfix 这 两个特性分支,在提交了若干更新后,把它 们 合并到主干分支,然后 删 除。 该 技 术 允 许 你迅速且完全的 进 行 语 境切 换 — 因 为 你的工作分散在不同的流水 线 里,每个分支里的改 变 都和它的目 标 特性相关, 浏览 代 码 之 类 的事情因而 变 得更 简单 了。你可以把作出的改 变 保持在特性分支中几分 钟 ,几天甚至几个月,等它 们 成熟以后再合并,而不用在乎它 们 建立的 顺 序或者 进 度。Git分支 -利用分支 进 行开 发 的工作流程• 现 在我 们 来看一个 实际 的例子。 请 看 图 3-20,由下往上,起先我 们 在 master 工作到 C1,然后开始一个新分支 iss91 尝试 修复 91 号缺陷,提交到 C6 的 时 候,又冒出一个解决 该问题 的新 办 法,于是从之前 C4 的地方又分出一个分支 iss91v2,干到 C8 的 时 候,又回到主干 master 中提交了 C9 和 C10,再回到 iss91v2 继续 工作,提交 C11,接着,又冒出个不太确定的想法,从 master 的最新提交 C10 处 开了个新的分支 dumbidea 做些 试验 。Git分支 -利用分支 进 行开 发 的工作流程• 现 在,假定两件事情:我 们 最 终 决定使用第二个解决方案,即 iss91v2 中的 办 法;另外,我们 把 dumbidea 分支拿 给 同事 们 看了以后, 发现 它竟然是个天才之作。所以接下来,我 们准 备 抛弃原来的 iss91 分支( 实际 上会 丢 弃 C5 和 C6),直接在主干中并入另外两个分支。最 终 的提交 历 史将 变 成 图这样 :• 请务 必牢 记这 些分支全部都是本地分支, 这 一点很重要。 当你在使用分支及合并的 时 候,一切都是在你自己的 Git 仓库 中 进 行的 — 完全不涉及与服 务 器的交互。Git分支 -远 程分支• 远 程分支( remote branch)是 对远 程 仓库 中的分支的索引。它 们 是一些无法移 动 的本地分支;只有在 Git 进 行网 络 交互 时 才会更新。远 程分支就像是 书签 ,提醒着你上次 连 接 远 程 仓库时 上面各分支的位置。• 我 们 用 (远 程 仓库 名 )/(分支名 ) 这样 的形式表示 远 程分支。比如我 们想看看上次同 origin 仓库 通 讯时 master 分支的 样 子,就 应该查 看 origin/master 分支。如果你和同伴一起修复某个 问题 ,但他 们 先推送了一个 iss53 分支到 远 程 仓库 , 虽 然你可能也有一个本地的 iss53 分支,但指向服 务 器上最新更新的却 应该 是 origin/iss53 分支。Git分支 -远 程分支• 假 设 你 们团队 有个地址 为 git.ourcompany.com 的 Git 服 务 器。如果你从 这 里克隆, Git 会自 动为 你将此 远 程 仓库 命名 为 origin,并下 载其中所有的数据,建立一个指向它的 master 分支的指 针 ,在本地命名 为 origin/master,但你无法在本地更改其数据。接着, Git 建立一个属于你自己的本地 master 分支,始于 origin 上 master 分支相同的位置,你可以就此开始工作:Git分支 -远 程分支• 如果你在本地 master 分支做了些改 动 ,与此同 时 ,其他人向 git.ourcompany.com 推送了他 们 的更新,那么服 务 器上的 master 分支就会向前推 进 ,而与此同 时 ,你在本地的提交 历 史正朝向不同方向 发 展。不 过 只要你不和服 务 器通 讯 ,你的 origin/master 指 针 仍然保持原位不会移 动 。
展开阅读全文
  微传网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
0条评论

还可以输入200字符

暂无评论,赶快抢占沙发吧。

关于本文
本文标题:Git使用简介ppt(1).ppt
链接地址:https://www.weizhuannet.com/p-11246416.html
微传网是一个办公文档、学习资料下载的在线文档分享平台!

网站资源均来自网络,如有侵权,请联系客服删除!

 网站客服QQ:80879498  会员QQ群:727456886

copyright@ 2018-2028 微传网络工作室版权所有

     经营许可证编号:冀ICP备18006529号-1 ,公安局备案号:13028102000124

收起
展开