Git 魔法 By Ben Lynn

Size: px
Start display at page:

Download "Git 魔法 By Ben Lynn"

Transcription

1 Git 魔法 Ben Lynn 中文版 PDF 版本下载 :Git_Magic_CN.pdf 译自 :

2 Git 魔法 By Ben Lynn

3 前言 致谢! 许可 链接... 5 免费 Git 服务器 入门 游戏人生 版本控制 分布控制 一个误区 冲突合并 基本技巧 保存状态 添加 删除 重命名 进阶撤销 重做 还原 下载文件 前沿 即时发布 我们已经做了什么? 克隆进阶 计算机间的同步 典型源码控制 项目分叉 终极备份 轻快多任务 游击版本控制 分支向导 老板键 脏活 快速修订 不间断工作流 重组杂乱 管理分支 临时分支 按你希望的方式工作 关于历史 改正标准 在这之后 本地变更最后部分 重写历史 制造历史 哪儿错了?... 28

4 5.7. 谁让事情变糟了? 个人经验 Git 大师 源码发布 历史记录生成 通过 SSH,HTTP 使用 Git 提交变更 我的提交太大了! 别丢了你的 HEAD 猎捕 HEAD 在 Git 上编译 大胆的绝技 解密 大象无形 数据完整性 智能 索引 裸资源库 Git 起源 Git 的缺点 微软 Windows 无关的文件 谁在编辑什么? 文件历史 初始克隆 不稳定的项目 全局计数器 空子目录 初始提交... 42

5 前言 Git( 是一个版本控制的瑞士军刀 一个可靠通用多用途版本控制工具, 它超强的灵活性使得一般人学着使用它没那么直白, 更别说掌握它了 我把到目前为止弄明白的记下来, 因为在我试图理解 Git 用户手册 ( scm/git/docs/user-manual.html) 的时候也是困难重重 ; 希望对别人有用 正如 Arthur C. Clarke 所发现的, 所有称得上先进的技术都和魔法难以区分 这是接近 Git 的一个很不错的办法 : 新手们可以忽略它内部机理, 只把 Git 看作一个小发明, 用它强大的功能让朋友吃惊, 让敌人发狂 我们提供大面上的指导, 而不是陷入细节 在重复使用之后, 慢慢地你会明白每个小技巧是如何工作的, 并且还会知道如何合理剪裁以适应您的需要 1. 致谢! 感谢 Dustin Sallings, Alberto Bertogli, James Cameron, Douglas Livingstone, Michael Budde, Richard Albury, Tarmigan 和 Derek Mahar 提出的建议和改进 [ 如果我漏掉了谁请告诉我因为我经常忘记更新这一节 ] 2. 许可 本指南在 GNU General Public License 版本 3 之下发布 ( gpl-3.0.html) 3. 链接 我曾经罗列了一些参考文献, 但这维护起来太费时了 除此之外, 也可以简单地使用搜索引擎 ( 来获得一些 Git 指导 ( search?q=git+tutorial), 指南 ( 以及比较 ( 附带 Subversion( 或者 Mercurial( 以及其他的版本控制系统

6 免费 Git 服务器 提供自由项目伺服服务, 包括本文档 ( gitmatic.git) 是另一个支持 Git 的开源项目伺服器 提供免费的开源项目伺服服务, 包括本文档也在其中 ( 也包括一些私有的付费项目

7 1. 入门 我将用类比的方式来介绍版本控制 更严谨些的解释可以参见 Wikipedia 版本修订控制条目 ( 游戏人生 我几乎一生下来就开始玩电脑游戏, 直到现在 然而, 我仅在我长大之后才开始使用版本控制系统 我想我的情况并非是极个别的, 比较这两者也许可以使得一些概念更容易解释和理解 把编辑代码或文档, 或无论什么, 当作玩游戏 一旦你已经取得了很多进展, 你会想到保存 你会点击值得信赖的编辑器的保存按钮来进行保存 但这将覆盖旧版本 就像那些在学校里玩的老游戏那样, 只有一个保存条 : 你确实可以保存, 但一旦保存就不能回到原来的状态 这太不应该了, 因为可能你之前的存档恰好在这个游戏特别有意思一关, 也许某天你想重新回顾一下 或者更糟糕的, 你当前的存档是个败局, 你不得不重玩 1.2. 版本控制 在编辑的时候, 如果想保留旧版本, 你可以将文件 另存为 一个不同的文件, 或在保存之前将文件拷贝到别处 或许还会把这些文件进行压缩, 来节省空间 这是一个原始的费功夫的版本控制形式 计算机游戏很久以前就改良了这块, 很多都提供了多个基于时间戳的自动保存记录功能 让我们看一些更复杂的情况 比如你有很多在一起的文件, 比如项目的源代码, 或网站的文件 现在如果你想保留旧版本你不得不存储拷贝整个目录 手工保存很多个版本不方便, 并且很快会变得高昂 对一些电脑游戏而言, 一个保存的游戏记录实际上是包括一个充满文件的目录 这些游戏对玩家屏蔽了具体细节, 并提供一个方便的界面来管理目录里的不同版本 版本控制系统也没有两样 两者都有友好的界面来管理目录里的内容 你频繁保存目录的状态, 也可以在之后加载任一旧状态 不像大多计算机游戏, 版本控制系统通常精于节省空间 比如说, 如果两个版本间只有少数文件的改变, 那就只存储差异的部分以节省存储空间, 而不是把所有的都保存下来

8 1.3. 分布控制 现在设想有一个非常难的计算机游戏 太难打了, 以至于全世界很多高级玩家决定组队, 分享他们保存的游戏记录以攻克它 Speedrun 们就是真实生活中的例子 : 在同一个游戏里, 玩家们专注攻克不同的等级, 这样的协同工作创造了惊人的战绩 如何搭建一个系统, 使得他们可以很容易得到其他人的保存记录? 并且很容易上载新的记录? 在过去, 每个项目都使用中心式版本控制 一个服务器存放所有保存的游戏记录 其他人都不用 每个玩家在他们机器上最多保留几个游戏记录 当一个玩家想更新进度时候, 他们需要把最新进度从主服务器下载下来, 玩一会儿, 保存并上载到主服务器以供其他人使用 假如一个玩家由于某种原因, 想得到一个较旧版本的游戏进度怎么样? 或许当前保存的游戏是一个败局, 因为某人在第三级忘记捡某个物品, 并且他们希望能找到最后一个可以完成游戏的记录 或者他们想比较两个旧版本间的差异, 来估算某个特定玩家干了多少活 查看旧版本的理由有很多, 但检查的办法都是一样的 他们必须去问中心服务器要那个旧版本的记录 需要的旧版本越多, 需要和服务器的交互就越多 新一代的版本控制系统,Git 就是其中之一, 是分布式系统, 可以被认作广义上的中心式系统 一个玩家从主服务器下载所有保存的记录, 不仅是最新版 这看起来好像他们把中心服务器做了个镜像 最初的克隆操作可能比较费时, 特别历史记录很长的时候, 但最终这个本地镜像备份会带来很多优势 一个显而易见的好处是, 当查看一个旧版本时, 不再需要和中心服务器通讯了 一个误区 一个很常见的错误观念是, 分布式系统不太适合需要正式中心存储的项目 这与事实并不相符 给某人照相并不会导致他们的灵魂被偷走 类似地, 对主存储进行克隆并不降低它的重要性 一般来说, 一个中心版本控制能做的任何事, 一个良好设计的分布式系统会做得更好 网络资源总要比本地资源耗费更多资源 不过我们应该在稍后分析分布式方案的缺点, 这样人们才不会按照习惯做出错误的比较 一个小项目或许只需要这种系统提供的一小部分功能 但你在计算较小数目的时候会使用罗马数字吗? 而且, 你的项目的增长可能会超出你最初的预期 从一开始就使用 Git 好似

9 带着一把瑞士军刀, 尽管你很多时候只是用它来开瓶盖 到你迫切需要一把改锥的那一天, 你就会庆幸你有的不单单是一个启瓶器 1.4. 冲突合并 对于这个话题, 我们计算机游戏的类比显得太单薄了 那么让我们再来看看文档编辑的情况吧 假设 Alice 在文件开头插入一行, 并且 Bob 在文件末尾添加一行 他们都上传了他们的改动 大多数系统将自动给出一个合理的处理方式 : 接受且合并他们的改动, 这样 Alice 和 Bob 两人的改动都会生效 现在假设 Alice 和 Bob 对文件的同一行做了不同的改动 如果没有人工参与的话, 这个冲突是无法解决的 第二个人在上载文件时, 会收到合并冲突的通知, 并且他们必须选择要么用一个人的改动覆盖另一个的, 要么完全修订这一行 更复杂的情况也可能出现 版本控制系统自己处理相对简单的情况, 把困难的情况留给人来处理 他们的行为通常都是可配置的

10 2. 基本技巧 与其一头扎进 Git 命令的海洋中, 不如使用一些基本的例子, 湿湿脚 例子尽管很简单但都很有用 实际上, 我开始使用 Git 的头几个月, 从来没觉得本章介绍的命令不够用 2.1. 保存状态 要不要来点猛的? 在做之前, 先为当前目录所有文件做个快照, 使用下列命令 : $ git init $ git add. $ git commit -m "My first backup" 上面的这组命令应该牢记, 或放到脚本里, 因为他们会常常被用到 现在如果你的文件编辑乱了, 运行 : $ git reset --hard 可以回到你原来编辑的地方 再次保存状态 : $ git commit -a -m "Another backup" 添加 删除 重命名 以上的命令将只对在你第一次运行 git add 命令时就已经存在的文件有用 如果要添加新文件或子目录, 你需要告诉 Git: $ git add NEWFILES... 类似地, 如果你想让 Git 忘记某些文件 ( 或许是由于你已经删除了他们 ): $ git rm OLDFILES...

11 重命名一个文件和先删除旧文件, 再添加新文件的一样 也有一个快捷方式 git mv, 这和 mv 命令的语法一样 例如 : $ git mv OLDFILE NEWFILE 2.2. 进阶撤销 重做 有时候你只想把某个时间点之后的所有改动都回滚掉, 因为这些的改动是不正确的 那么可以使用 : $ git log 显示最近提交列表, 以及他们的 SHA1 哈希值 下面, 键入 : $ git reset --hard SHA1_HASH 来恢复到一个指定的提交状态, 并从记录里永久抹掉所有比该记录更新的提交 另一些时候你想简单地跳到一个旧状态 这种情况, 键入 : $ git checkout SHA1_HASH 这个操作将把你带回过去, 同时保存较新提交 然而, 像科幻电影里时光旅行一样, 如果你这时编辑并提交的话, 你将身处另一个现实里, 因为你的动作与开始时相比是完全不同的 这另一个现实叫作分支 (branch), 之后我们会对这点多讨论一些 至于现在, 只要记住 : $ git checkout master 会把你带到当下来 在你运行 checkout 命令时, 并不提交时光旅行中的改变

12 再次用计算机游戏做类比 : git reset -- hard: 加载一个旧的游戏存档, 并删除所有比它新的存档 git checkout: 加载旧游戏存档, 但如果你从这个存档开始玩, 游戏状态将有别于你之前保存的更新的记录 此后任何记录都保存到另一个分支中, 代表你进入的另一个现实 后面会详细讲 你可以选择只恢复特定文件或子目录, 把这些加到该命令后面就可以了 不喜欢剪切粘贴哈希值? 那么用 : $ git checkout "@{10 minutes ago}" 其他的时间格式也是可以的 比如, 你可以要求倒数第五次保存状态 : $ git checkout "@{5}" 还原 在法庭上, 事件可以从法庭记录里追踪出来 同样, 你可以选择还原特定的提交 $ git commit -a $ git revert SHA1_HASH 将还原特定哈希值的提交 运行 git log 显示该还原记录为一个新的提交 2.3. 下载文件 得到一个由 Git 管理的项目的拷贝, 键入 : $ git clone git://server/path/to/files 例如, 得到我用来创建该站的所有文件 :

13 $ git clone git://git.or.cz/gitmagic.git 我们很快会对 clone 命令谈的更多 2.4. 前沿 如果你已经使用 git clone 命令得到了一个项目的一份拷贝, 你可以更新到最新版 : $ git pull 2.5. 即时发布 假设你已经写了一个脚本, 你想和他人分享 你可以只告诉他们从你的计算机下载, 但如果在你正在改进你的脚本, 或加入试验性质的改动时, 他们下载了你的脚本, 他们可能由此陷入困境 当然, 这就是发布周期存在的原因 开发人员可能频繁进行项目修改, 但他们只在他们觉得代码可以见人的时候才择时发布 用 Git 来完成这项, 需要进入你的脚本所在目录 : $ git init $ git add. $ git commit -m "First release" 然后告诉你的用户去运行 : $ git clone your.computer:/path/to/script 来下载你的脚本 这要假设他们有 ssh 访问权限 如果他们没有, 你需要运行 git daemon 并告诉你的用户去运行 : $ git clone git://your.computer/path/to/script 从现在开始, 每次你的脚本准备好发布时, 就运行 : $ git commit -a -m "Next release" 并且你的用户可以通过进入包含你脚本的目录, 并键入下列命令, 来更新他们的版本 :

14 $ git pull 你的用户永远也不会取到你不想让他们看到的脚本版本 显然这个技巧对所有的东西都是可以, 不仅是对脚本 2.6. 我们已经做了什么? 找出自从上次提交之后你已经做了什么改变 : $ git diff 或者自昨天 : $ git diff "@{yesterday}" 或者一个特定的版本和版本 2 之间 : $ git diff SHA1_HASH "@{2}" 除了直接运行 log 和 diff, 有时我也用 qgit 浏览历史 ( qgit), 因为它的图形界面很养眼, 或者用 tig( 一个文本界面东西, 在网速不快的情况下也工作的很好 另外, 安装一个 Web 服务器, 运行 git instaweb, 那就可以用任意的浏览器浏览了

15 3. 克隆进阶 在旧一代的版本控制系统里,checkout 是获取文件的标准操作 你将获得一组期望状态下的文件 在 Git 和其他分布式版本控制系统里, 克隆是标准的操作 通过创建整个资源库的克隆来获得文件 或者说, 你实际上把整个服务器做了个镜像 主资源库上能做的是, 你都能做 3.1. 计算机间的同步 这也是我第一次使用 Git 的原因 我可以忍受制作 tar 包或利用 rsync 来作备份或者作简单的同步 但我时而在我笔记本上编辑, 时而在台式机上, 而且这两台电脑之间也许不能交互 在一个机器上初始化一个 Git 资源库并提交你的文件 然后转到另一台机器上 : $ git clone other.computer:/path/to/files 创建这些文件和 Git 资源库的第二个拷贝 从现在开始 : $ git commit -a $ git pull other.computer:/path/to/files 将从另一台机器拷贝文件到你正工作的机器上 如果你最近对同一个文件做了有冲突的修改,Git 将通知你, 而你也应该在解决冲突之后再次提交 3.2. 典型源码控制 为你的文件初始化 Git 资源库 : $ git init $ git add. $ git commit -m "Initial commit" 在中心服务器, 初始化一个空的 Git 资源库, 如果需要的话, 启动 Git 守护进程 :

16 $ GIT_DIR=proj.git git init $ git daemon --detach # it might already be running 一些公用主机, 比如 repo.or.cz( 通过不同于以上的方法来搭建最初空 Git 资源库, 比如在网页上填一个表单 把你的项目推到中心服务器 : $ git push git://central.server/path/to/proj.git HEAD 这样我们准备好了 一个开发人员可以这样 check out 源码 : $ git clone git://central.server/path/to/proj.git 在做了改动之后,check in 源码到主服务器 : $ git commit -a $ git push 如果主服务器已经更新了, 最新版在 push 之前需要 check out 同步到最新版 : $ git commit -a $ git pull 3.3. 项目分叉 项目走歪了吗? 或者认为你可以做得更好? 那么在服务器上 : $ git clone git://main.server/path/to/files 之后告诉每个相关的人你服务器上项目的分支 在之后的时间, 你可以合并来自原先项目的改变, 使用命令 : $ git pull

17 3.4. 终极备份 会有很多禁止篡改的不同位置上的冗余存档吗? 如果你的项目有很多开发人员, 那干脆别想了 你的每份代码克隆是一个有效备份 不仅当前状态, 还包括你项目整个历史 感谢哈希加密算法, 如果任何人的克隆被损坏, 只要他们与其他的交互, 这个克隆就会打上记号 如果你的项目并不是那么流行, 那就找尽可能多的主服务器来放克隆 真正的偏执狂应该总是把 HEAD 最近 20 字节的 SHA1 哈希值写到安全的地方 应该保证安全, 而不是把它藏起来 比如, 把它发布到报纸上就不错, 因为对攻击者而言, 更改每份报纸是很难的 3.5. 轻快多任务 比如你想并行开发多个功能 那么提交你的项目并运行 : $ git clone. /some/new/directory Git 使用硬链接和文件共享来尽可能安全地创建克隆, 因此它一眨眼就完成了, 因此你现在可以并行操作两个没有相互依赖的功能 例如, 你可以编辑一个克隆, 同时编译另一个 在任何时间, 你都可以从另一个克隆提交或拿下变更 $ git pull /the/other/clone 3.6. 游击版本控制 你正做一个使用其他版本控制系统的项目, 而你非常怀念 Git? 那么在你的工作目录初始化一个 Git 资源库 : $ git init $ git add. $ git commit -m "Initial commit" 然后以很快的速度克隆它 :

18 $ git clone. /home/new/directory 现在转到新目录并在这个目录工作, 在你心里的内容上使用 Git 过一会, 一旦你想和其他每个人同步, 在这种情况下, 转到原来的目录, 用其他的版本控制工具同步, 并键入 : $ git add. $ git commit -m "Sync with everyone else" 然后转到新目录并运行 : $ git commit -a -m "Description of my changes" $ git pull 把你的变更提交给他人的过程依赖于其他版本控制系统 这个新目录包含你的改动的文件 需要运行其他版本控制系统的命令来上载这些变更到中心资源库 命令 git svn 为 Subversion 资源库自动化了以上步骤, 并且也可以用作 Git 项目导出到一个 Subversion 资源库 ( 参见

19 4. 分支向导 瞬间就能完成的分支和合并是 Git 最致命的杀手锏 问题 : 外部因素不可避免地使场景切换成为必须 在发布版本中没有任何前兆的突然出现了一个严重臭虫, 并且必须不惜一切代价尽快修复 某个特性的截至日期就要来临 写这个功能的家伙正打算离职, 因此你应该停下所有你正在做的, 抓住他帮你理解这个功能 中断连贯的思维会降低你的生产力, 并且切换上下文也比较缓慢, 不方便, 中断的越长损失越大 使用中心版本控制我们必须从中心服务器下载一个崭新的工作拷贝 分布式系统的情况就好多了, 因为我们能够在本地克隆所需要的版本 但是克隆仍然需要拷贝整个工作目录, 以及一直到指定点的整个历史记录 尽管 Git 使用文件共享和硬链接减少了花费, 项目文件自身必须在新的工作目录里重新创建 方案 : 针对这些情况,Git 有一个更好的工具, 比克隆更快速而且节省空间 :git branch 在这个神奇的世界里, 你目录里的文件突然从一个版本变到另一个版本 除了只是在历史记录里前前后后的转变之外, 这个转换还可以做更多 你的文件可以从上一个版本变到实验版本到当前开发版本到你朋友的版本等等 4.1. 老板键 曾经玩过那样的游戏吗? 按一个键 ( 老板键 ), 屏幕立即显示一个电子表格或别的? 那么如果老板走进办公室, 而你正在玩游戏, 就可以用这个功能来遮掩一下 在某个目录 : $ echo "I'm smarter than my boss" > myfile.txt $ git init $ git add. $ git commit -m "Initial commit" 我们已经创建了一个 Git 资源库, 该资源库记录一个包含特定信息的文件 现在我们键入 : $ git checkout -b boss # 之后似乎没啥改变 $ echo "My boss is smarter than me" > myfile.txt

20 $ git commit -a -m "Another commit" 看起来我们刚刚只是覆盖了原来的文件并提交了它 但这是个错觉 键入 : $ git checkout master # 切到原来版本的文件 嘿真快! 这个文件就恢复了 并且如果老板决定窥视这个目录, 键入 : $ git checkout boss # 切到适合老板眼睛的版本 你可以在两个版本之间相切多少次就切多少次, 而且每个版本都可以独立提交 4.2. 脏活 比如你正在开发某个特性, 并且由于某种原因, 你需要回到一个旧版本, 临时加进几行打印语句来看看一些东西是如何工作的 那么 : $ git commit -a $ git checkout SHA1_HASH 现在你可以满世界加丑陋的临时代码 你甚至可以提交这些改动 当你做完的时候, $ git checkout master 来返回到你原来的工作 观察任何未提交变更都转结了 如果你想之后保存临时变更怎么办? 简单 : $ git checkout -b dirty 并且在切换到主分支之前提交 无论你什么时候想返回脏的变更, 只需键入 : $ git checkout dirty 当我们讨论加载旧状态的时候, 我们在较早章节曾接触过这个命令 最终我们把故事说全 : 文件改变成请求的状态, 但我们必须离开主分支 从现在开始任何提交都会将你的文

21 件提交到另一条不同的路, 这个路可以之后命名 换一个说法, 在 checkout 一个旧状态之后,Git 自动把你放到一个新的, 未命名的分支, 这个分支可以使用 git checkout -b 来命名和保存 4.3. 快速修订 你正在做某件事的当间, 被告知先停下来所有的事情去修理一个新近发现的臭虫 : $ git commit -a $ git checkout -b fixes SHA1_HASH 那么一旦你修正了这个臭虫 : $ git commit -a -m "Bug fixed" $ git push # 到中心资源库 $ git checkout master 并可以继续你原来的任务 4.4. 不间断工作流 一些项目要求在你提交你的代码之前需要审批 为了让审批代码的过程更简单, 如果你有一个大的改动, 你可能会将它分成两个或更多的部分, 进行单独的审批 如果在第一部有获得准许并提交之前, 第二部分不能写怎么办? 在许多版本控制系统中, 你不得不先将第一部分发送给审批者, 然后等待, 直到这部分获得批准后, 才可以开始第二部分的工作 实际上那并非全是真的, 但在这些系统中, 在第一部分提交前, 就编辑第二部分会引入很多痛苦和困难 在 Git 里, 分支和合并是无痛的 ( 快速和本地的一个技术词汇 ) 因此在你提交第一部分内容并发送给审批者后 : $ git checkout -b part2 接下来, 为这个大变动的第二部分进行编码, 不必等待第一部分的接受 在第一部分获得批准并提交后 :

22 $ git checkout master $ git merge part2 $ git branch -d part2 # 不在需要这个分支 并且第二部分也准备好审批 不过等等! 如果没那么简单怎么办? 比如你在第一部分犯了一个错误, 在你提交之前你不得不更正它 没问题! 首先, 转到主分支 : $ git checkout master 修复第一部分变更里的这个问题, 并希望它得到批准 如果没获得批准就简单重复这一步 你或许希望将第一部分修改后的版本合并到第二部分 : $ git checkout part2 $ git merge master 现在它和以前一样了 一旦第一部分获得批准并提交 : $ git checkout master $ git merge part2 $ git branch -d part2 并且再次, 第二部分也准备好审批了 这个技巧可以很容易地被扩展, 来处理任意多数目的部分 4.5. 重组杂乱 或许你喜欢在同一个分支下完成工作的方方面面 你想为自己保留工作进度并希望其他人只能看到你仔细整理过后的提交 开启一对分支 : $ git checkout -b sanitized $ git checkout -b medley 接下来, 可以做任何事情 : 修臭虫, 加特性, 加临时代码, 诸如此类, 经常按这种方式提交 然后 :

23 $ git checkout sanitized $ git cherry-pick SHA1_HASH 在 sanitized 分支应用给定提交 在分支上选择一个最合适的点, 你可以建设一个只包含永久代码, 有关提交组合在一起的分支 4.6. 管理分支 键入 : $ git branch 来列出所有分支 总有一个叫做 master, 并且你默认从这开始 一些人主张别碰 master 分支, 而是创建你自己版本的新分支 使用 -d -m 选项来删除 移动 ( 重命名 ) 分支 参见 git help branch 4.7. 临时分支 很快你会发现你经常会因为一些相同的原因创建短期的分支 或许有些时候你创建分支只是为了保存当前状态, 同时你方便在上一个保存状态执行一些操作, 诸如修复高优先级的臭虫之类 可以和电视的换台做类比, 临时切到别的频道, 来看看那正演什么, 但并不是简单地按几个按钮, 你必须创建, 检出, 删除并提交临时分支 幸运的是,Git 已经有了和电视机遥控器一样方便的功能 : $ git stash 这个命令保存当前状态到一个临时的地方 ( 一个隐藏的地方 ) 并且恢复之前状态 你的工作目录看起来和你开始编辑之前一样, 并且你可以修复臭虫, 引入之前变更等 当你想回到隐藏状态的时候, 键入 : $ git stash apply # 你可能需要解决一些冲突 你可以有多个隐藏, 并用不同的方式来操作他们 参见 git help slash

24 4.8. 按你希望的方式工作 诸如 Mozzila Firefox( 允许你打开多个标签和多个窗口 切换标签可以在同一个窗口展示不同内容 Git 的分支就像是你工作目录的标签 继续这个类比,Git 克隆好似打开一个新的窗口 这两种操作的易用性提高了用户体验 在更高层, 几个 Linux 窗口管理器允许你有多个桌面 : 你可以立即切到一个显示器 另一个相似的例子是 screen( 工具 这个好东西允许你在同一个终端上创建, 销毁终端会话, 还可以在多个终端会话之间切换 不是打开一个新的终端 ( 类似于克隆 ), 如果你使用 screen( 类似于分支 ), 你可以使用同一个终端 实际上, 你还可以利用 screen 做更多的事, 不过这是另一个话题的内容了 在 Git 里, 克隆 分支和合并是本地操作, 很快 促使你能使用最适合你的组合 Git 让你能按你确切想要的工作

25 5. 关于历史 Git 一系列的分布式特性使得历史可以很容易的被修改掉 但如果你篡改了过去, 需要小心 : 只重写你独自拥有的那部分 如同民族间会无休止的争论谁犯下了什么暴行一样, 如果在另一个人的克隆里, 历史版本与你的不同, 这时如果合并的话, 你会遇到一致性方面的问题 当然, 如果你掌管所有分支的话, 那就没啥问题了, 既然你可以覆盖他们的 一些开发人员强烈地感觉历史应该永远不变, 无论不好的部分或这所有的部分 另一些觉得代码树在向外发布之前, 应该整得漂漂亮亮的 Git 支持两者的观点 像克隆, 分支和合并一样, 重写历史只是 Git 给你的另一强大功能, 至于如何使用它, 那是你的事了 5.1. 改正标准 已经提交了, 但你期望你已经输入了另外的信息? 那么键入 : $ git commit --amend 来改变上一条信息 意识到你还忘记了加一个文件? 运行 git add 来加, 然后与性上面的命令 希望在上次提交里包括多一点的改动? 那么就做这些改动并运行 : $ git commit --amend -a 5.2. 在这之后 假设前面的问题还要糟糕十倍 在很长一段时间里我们做了一系列的提交 但你不太喜欢他们的组织方式, 而且一些提交信息需要重写 那么键入 : $ git rebase -i HEAD~10 并且后 10 个提交会出现在你喜爱的 $EDITOR 一个例子 :

26 pick 5c6eb73 Added repo.or.cz link pick a311a64 Reordered analogies in "Work How You Want" pick f Added push target to Makefile 之后 : 通过删除行来移去提交 通过为行重新排序来为提交重新排序 用 edit 来替换 pick 来标志一个提交可修改 用 squash 来替换 pick 来将一个提交和前一个合并 如果你把一个提交标记为可编辑, 那么运行 $ git commit --amend 或者, 运行 : $ git rebase --continue 这样尽早提交, 经常提交都没关系 : 你可以之后使用 rebase 来梳理清楚 5.3. 本地变更最后部分 你正在一个活跃的项目上工作 随着时间推移, 你做了几个本地提交, 然后你使用合并与官方版本同步 在你准备好提交到中心分支之前, 这个循环会重复几次 但现在你本地 Git 克隆的变更历史与官方变更乱成了一锅粥 你会更期望在变更列表里, 你所有的变更能够连续的 这就是上面提到的 git rebase 的工作 在很多情况下你可以使用 --onto 标记以避免交互 另外参见 git help rebase, 以获取这个让人惊奇的命令更详细的例子 你可以拆分提交 你甚至可以重新组织一棵树的分支 5.4. 重写历史 偶尔, 你需要做一些代码控制, 好比从正式的照片中去除一些人一样, 需要从历史记录里面彻底的抹掉他们 例如, 假设我们要发布一个项目, 但由于一些原因, 项目中的某个文件不能公开 或许我把我的信用卡号记录在了一个文本文件里, 而我又意外的把它加入到了这个项目中 仅仅删除这个文件是不够的, 因为从别的提交记录中还是可以访问到这个

27 文件 因此我们必须从所有的提交记录中彻底删除这个文件 $ git filter-branch --tree-filter `rm top/secret/file` HEAD 参见 git help filter-branch, 那讨论这个例子并给出一个更快的方法 一般地,filterbranch 允许你使用一个单一命令来大范围地更改历史 事后, 你必须使用你更改过的版本替换你项目的克隆, 如果你希望之后和他们交互的话 5.5. 制造历史 想把一个项目迁移到 Git 吗? 如果这个项目是用一些比较有名的系统管理着, 那可以使用一些其他人已经写好的脚本, 把整个项目历史记录导出到 Git 里 否则, 看一下 git fast-import, 这个命令会从一个特定格式的文本读入, 从头来创建 Git 历史记录 通常可以很快地组织一个包含这个命令的脚本, 运行一次就可以一次迁移整个项目 作为一个例子, 粘贴以下所列到临时文件, 比如 /tmp/history: commit refs/heads/master committer Alice <alice@example.com> Thu, 01 Jan :00: data <<EOT Initial commit. EOT M inline hello.c data <<EOT #include <stdio.h> int main() { printf("hello, world!\n"); return 0; } EOT commit refs/heads/master committer Bob <bob@example.com> Tue, 14 Mar :59: data <<EOT Replace printf() with write(). EOT

28 M inline hello.c data <<EOT #include <unistd.h> int main() { write(1, "Hello, world!\n", 14); return 0; } EOT 之后从这个临时文件创建一个 Git 资源库, 键入 : $ mkdir project; cd project; git init $ git fast-import < /tmp/history 你可以从这个项目 checkout 出最新的版本, 使用 : $ git checkout master 哪儿错了? 你刚刚发现程序里有一个功能出错了, 而你十分确定几个月以前它运行的很正常 天啊! 这个臭虫是从哪里冒出来的? 要是那时候能按照开发的内容进行过测试该多好啊 现在说这个已经太晚了 然后即使你过去经常提交变更,Git 还是可以精确的找出问题所在 : $ git bisect start $ git bisect bad SHA1_OF_BAD_VERSION $ git bisect good SHA1_OF_GOOD_VERSION Git 从历史记录中检出一个中间的状态 在这个状态上测试功能, 如果还是错误的 : $ git bisect bad

29 如果可以工作了, 则把 "bad" 替换成 "good" Git 会再次帮你找到一个以确定的好版本和坏版本之间的状态, 通过这种方式缩小范围 经过一系列的迭代, 这种二进制查询会帮你找到导致这个错误的那次提交 一旦完成了问题定位的调查, 你可以返回到原始状态, 键入 : $ git bisect reset 不需要手工测试每一次改动, 执行如下命令可以自动的完成上面的搜索 : $ git bisect run COMMAND Git 使用指定命令 ( 通常是一个一次性的脚本 ) 的返回值来决定一次改动是否是正确的 : 命令退出时的代码 0 代表改动是正确的,125 代表要跳过对这次改动的检查,1 到 127 之间的其他数值代表改动是错误的 返回负数将会中断整个 bisect 的检查 你还能做更多的事情 : 帮助文档解释了如何展示 bisects, 检查或重放 bisect 的日志, 并可以通过排除对已知正确改动的检查, 得到更好的搜索速度 5.7. 谁让事情变糟了? 和其他许多版本控制系统一样,Git 也有一个 "blame" 命令 : $ git blame FILE 这个命令可以标注出一个指定的文件里每一行内容的最后修改者, 和最后修改时间 但不像其他版本控制系统,Git 的这个操作是在线下完成的, 它只需要从本地磁盘读取信息 5.8. 个人经验 在一个中心版本控制系统里, 历史的更改是一个困难的操作, 并且只有管理员才有权这么做 没有网络, 克隆, 分支和合并都没法做 像一些基本的操作如浏览历史, 或提交变更也是如此 在一些系统里, 用户使用网络连接仅仅是为了查看他们自己的变更, 或打开文件进行编辑 中心系统排斥离线工作, 也需要更昂贵的网络设施, 特别是当开发人员增多的时候 最重

30 要的是, 通常当用户试图避免使用那些能不用则不用的高级命令时, 所有操作都变得很慢 在极端的情况下, 即使是最基本的命令也会变慢 当用户必须运行慢的命令的时候, 由于工作流被打断, 生产力降低 我有这些现象的一手经验 Git 是我使用的第一个版本控制系统 我很快变得适应了它, 用了它提供的许多功能 我简单地假设其他系统也是相似的 : 选择一个版本控制系统应该和选择一个编辑器或浏览器没啥两样 在我之后被迫使用中心系统的时候, 我被震惊了 我那有些脆弱的网络连接没给 Git 带来大麻烦, 但是当它需要像本地硬盘一样稳定的时候, 它使开发困难重重 另外, 我发现我自己有选择地避免特定的命令, 以避免踏雷, 这极大地影响了我, 使我不能按照我喜欢的方式工作 当我不得不运行一个慢的命令的时候, 这种等待极大地破坏了我思绪连续性 在等待服务器通讯完成的时候, 我选择做其他的事情以度过这段时光, 比如查看邮件或写其他的文档 当我返回我原先的工作场景的时候, 这个命令早已结束, 并且我还需要浪费时间试图记起我之前正在做什么 人类不擅长场景间的切换 还有一个有意思的大众悲剧效应 : 预料到网络拥挤, 为了减少将来的等待时间, 每个人将比以往消费更多的带宽在各种操作上 共同的努力加剧了拥挤, 这等于是鼓励个人下次消费更多带宽以避免更长时间的等待

31 6. Git 大师 这个有点自夸的标题下是我压箱底的 Git 不在编的技巧 6.1. 源码发布 就我的项目而言,Git 确切跟踪了我想打包并发布给用户的文件 创建一个源码包, 我运行 : $ git archive --format=tar --prefix=proj-1.2.3/ HEAD 6.2. 历史记录生成 保留一份历史记录是一个好实践 ( 这甚至是一些项目所要求的 如果你变更提交的很频繁, 这是应该的, 可以生成一份历史记录, 通过键入 : $ git log > Changelog 6.3. 通过 SSH,HTTP 使用 Git 假设你有一台 web 服务器的 ssh 访问权限, 但上面并没有安装 Git 没有比服务器上自带协议更省事的方法的,Git 可以通过 HTTP 来进行通信 那么在你的帐户下下载, 编译并安装 Git 在你的 Web 目录里创建一个 Git 资源库 : $ GIT_DIR=proj.git git init 在目录 proj.git 目录, 运行 $ git --bare update-server-info $ chmod a+x hooks/post-update 从你的计算机通过 SSH 推送 : $ git push we.server:/path/to/proj.git master

32 别人可以通过如下命令, 得到你的项目 : $ git clone 提交变更 对特定项目, 当你加入 删除 重命名一些文件时, 告诉 Git 这个操作是有困难的 你可以键入 : $ git add. $ git add -u Git 会查看当前目录的这些文件, 并独立计算出所有细节 如果你还试图同时提交的话, 可以不使用第二个添加命令, 而是运行 git commit -a 也可以用单独的一行完成以上的任务 : $ git ls-files -d -m -o -z xargs -0 git update-index --add --remove 这里 -z 和 -0 选项可以避免文件名中包含特殊字符带来的错误 注意该命令也添加应该被忽略的文件 这时你或许希望使用 -x 或 -X 选项 6.5. 我的提交太大了! 是不是太长时间忘记了提交? 痴迷地编码, 以至到现在才想起有源码控制工具这回事? 提交一系列不相关的变更, 因为那是你的风格? 别着急, 运行 : $ git add -p 为你做的每次修改,Git 将为你展示变动的代码, 并询问该变动是否应是下一次提交的一部分 回答 y 或者 n 也有其他选项, 比如延迟决定 : 键入? 来学习更多 一旦你满意, 键入

33 $ git commit 来精确地提交你所选择的变更 ( 阶段变更 ) 确信你没加上 -a 选项, 否则 Git 将提交所有修改 如果你修改了许多地方的许多文件怎么办? 一个一个地查看变更令人沮丧, 心态麻木 这种情况下, 使用 git add -i, 界面不是很直观, 但更灵活 敲几个键, 你可以一次决定阶段提交几个文件, 或查看并检查特定文件的变更 作为另一种选择, 你还可以运行 git commit --interactive, 这个命令会在你操作完后自动进行提交 6.6. 别丢了你的 HEAD HEAD 好似一个游标, 通常指向最新提交, 随最新提交向前移动 Git 提供了命令来移动它 例如 : $ git reset HEAD~3 将立即向回移动 HEAD 三个提交 这样所有 Git 命令都表现得好似你没有做那最后三个提交, 然而你的文件保持在现在的状态 具体应用参见 git reset 手册页 但如何回到将来呢? 过去的提交对将来一无所知 如果你有原先 Head 的 SHA1 值, 那么 : $ git reset SHA1 但假设你从来没有记下呢? 别着急, 像这些命令,Git 保存原先的 Head 为一个叫 ORGI_HEAD 的标记, 你可以安全体面的返回 : $ git reset ORIG_HEAD 6.7. 猎捕 HEAD 或许 ORG_HEAD 不够 或许你刚认识到你犯了个历史性的错误, 你需要回到一个早已忘记的分支上的一个远古的提交 默认,Git 保存一个提交至少两星期, 即使你命令 Git 摧毁该提交所在的分支 难点是找到相应的哈希值 你可以查看在.git/objects 里所有的哈希值并尝试找到你期望的 但有更容易的办法

34 Git 把算出的提交哈希值记录在.git/logs 这个子目录引用包括所有分支上所有活动的历史, 同时文件 HEAD 显示它曾经有过的所有哈希值 后者可以被用来分支上一些不小心丢掉的提交的哈希值 命令 reflog 为访问这些日志提供文件友好的接口, 试试 $ git reflog 更多信息参见其文档页 你或许期望去为已删除的提交设置一个更长的保存周期 例如 : $ git config gc.pruneexpire "30 days" 意思是一个被删除的提交会在删除 30 天后, 且运行 git gc 以后, 被永久丢弃 你或许还想关掉 git gc 的自动运行 : $ git config gc.auto 0 在这种情况下提交将只在你手工运行 git gc 的情况下才永久删除 6.8. 在 Git 上编译 依照真正的 UNIX 风格,Git 的设计允许其可以被很容易用作其他程序的底层组件 有图形界面,Web 界面, 可选择的命令行界面, 并且或许很快你将有一个或两个你自己的脚本, 调用 Git 一个简单的技巧是, 用 Git 内建 alias 命令来缩短你最常用命令的长度 : $ git config --global alias.co checkout $ git config --global --get-regexp alias # 显示当前别名 alias.co checkout $ git co foo # 和 'git checkout foo' 一样 另一个是在提示符或窗口标题上打印当前分支 调用 :

35 $ git symbolic-ref HEAD 显示当前分支名 在实际应用中, 你可能最想去掉 refs/heads/ 并忽略错误 : $ git symbolic-ref HEAD 2> /dev/null cut -b 12- 更多例子参见 Git 主页 ( 大胆的绝技 最近版本的 Git 使得用户意外销毁数据变得更困难了 这或许是升级的最令人瞩目的原因了 虽然如此, 有时你的确想销毁数据 我们展示如何覆盖为通用命令所设的防卫设施 只在你知道你在做什么的时候使用他们 Checkout: 如果你有未提交的变更, 平常的 checkout 会失败 销毁你的变更, 并无论如何都 checkout 一个指定的提交, 使用强制选项 : $ git checkout -f COMMIT 另外, 如果你为 checkout 指定的路径, 那就没有安全检查了 提供的路径将被不加提示地覆盖 如果你使用这种方式的 checkout, 一定要小心 重置 : 在有未提交变更的情况下, 重置也会失败 强制其通过, 运行 : $ git reset --hard [COMMIT] 分支 : 如果删除一个分支会导致变更丢失的, 删除操作会失败 强制删除, 键入 : $ git branch -D BRANCH # 注意不是 -d 类似地, 试图通过移动覆盖一个分支也会失败, 如果数据确信会丢失的话 强制移动分支, 键入 : $ git branch -M [SOURCE] TARGET # 注意不是 -m 不像 checkout 和重置, 这两个命令延迟数据销毁的时间 这个变更仍然存储在.git 的子目录里, 并且可以通过恢复.git/logs 里的相应哈希值获取到 ( 参见上面 猎捕 HEAD 一

36 节 ) 默认情况下, 这些数据会保存至少两星期

37 7. 解密 我们揭开 Git 神秘面纱, 往里瞧瞧它是如何创造奇迹的 我会跳过细节 更深入的描述参见用户手册 ( 大象无形 Git 怎么这么谦逊寡言呢? 除了偶尔提交和合并外, 你可以如常工作, 就像不知道版本控制系统存在一样 那是, 直到你需要它, 而且那时候你也很高兴 Git 一直默默注视着你整个的工作 其他版本控制系统可不许你忘记他们 在你显示地告诉服务器你打算编辑哪些文件前, 文件权限也许是只读的 中心服务器可能正跟踪什么人, 什么时候 check out 了什么代码 当网络连接断了的时候, 你就遭殃了 开发人员不断地与这些版本控制系统的种种限制作斗争 秘诀就在你工作目录里的.git 目录 Git 在这里记录你项目的历史 最前面的. 使这个文件在 ls 的输出中不显示 除了你的提交或同步变更以外, 所有版本控制操作都在这个目录里操作 你对你文件的命运有完全的掌控, 因为 Git 根本不关心你对他们做了什么 Git 可以很容易地从.git 里重新创建出一个保存状态 7.2. 数据完整性 很多人把加密和保持信息机密性关联起来, 但一个同等重要的目标是保证信息的安全性 合理使用哈希加密功能可以防止意外地或恶意地数据损坏 一个 SHA1 哈希值是一个 160 位的 ID 数, 用它可以唯一标识你一生中遇到的每个二进制字符串 实际上不止如此 : 任何人几辈子用到的所有字符串都可以用它来唯一标识 对一个文件而言, 其整体内容的哈希值可以被看作这个文件的唯一标识 ID 数 一个重要的发现是, 一个 SHA1 哈希值本身也是一个二进制字符串, 因此我们可以为包含其他哈希值的字符串生成哈希值 大略地讲, 所有 Git 处理的文件通过他们的唯一 ID 来引用, 而不是通过他们的文件名 所有数据保存在.git/objects 子目录里, 那里你找不到任何标准的文件名 文件内容都是我们叫做 blobs 的二进制字符串, 这些二进制字符串跟他们的文件名也是剥离的

38 而文件名会被记录在别的地方 他们被存储在 树 对象里, 这里记录着文件名和他们内容的 ID 值对应关系列表 既然树本身是一个二进制字符串, 它也有一个唯一 ID, 这也是它是如何被存储在.git/objects 子目录里的办法 树可以出现在其他树的列表里, 因此一个目录树和其所有文件可以被表达为树和 blob 最终, 一个 提交 包含一条消息 : 一些树 ID 和他们之间如何关联的信息 一个提交也是一个二进制字符串, 因为它也有一个唯一 ID 你可以自己看看 : 在.git/objects 目录里随便找一个哈希值, 然后键入 : $ git cat-file -p SHA1_HASH 现假设某人试图重写历史记录, 并准备更改一个古老版本里一个文件的内容 那么这个文件的 ID 将被更改, 因为这个文件变成了另一个二进制字符串 这会影响每一个引用这个文件的的树对象, 并导致所有与该树相关的已提交对象都需要被更改 因为有多个文件中包含着错误的 ID, 当人们完成提交操作时, 就会发现这个遭到破坏的资源库 我已经忽略了诸如文件权限和签名之类的细节 但简单地讲, 只要 20 字节的长度就能代表最后的提交是安全的, 破坏 Git 资源库是不可能的 7.3. 智能 Git 是如何知道你重命名了一个文件, 即使你从来没有明确提及这个事实? 当然, 你或许是运行了 git mv, 但这个命令和 git add 紧接 git rm 是完全一致的 Git 启发式地找出相连版本之间的重命名和拷贝 实际上, 它能检测文件之间代码块的移动或拷贝! 虽然它不能包揽所有的情况, 但它已经做的很好了, 并且这个功能也总在改进改进 如果它在你那儿不工作的话, 可以尝试打开开销更高的拷贝检测选项, 并考虑升级 7.4. 索引 为每个跟踪的文件,Git 在一个名为 index 的文件里记录其诸如大小, 创建时间和最后修改时间的信息 Git 比较其当前与在 index 里的统计资料, 以确定文件是否更改 如果一致, 那 Git 就避免重新读取该文件 因为调用统计资料比读文件内容的开销小很多, 如果你仅仅编辑了少数几个文件,Git 几乎不需要什么时间就能更新他们的状态

39 7.5. 裸资源库 你或许想知道那些在线 Git 资源库用的是什么格式 他们除了具有类似 proj.git 的名字以外, 和你的.git 目录一样, 是无格式的 另一个不同点是他们没有关联任何工作目录 大多数 Git 命令默认 Git 的索引是存放在.git 目录, 但在这些裸资源库上并不是这样, 所以会导致命令执行失败 为了解决这个问题, 可以设置环境变量 GIT_DIR 来指定裸资源库所在路径, 或者在裸资源库的目录里运行 Git 时加上 --bare 选项 7.6. Git 起源 Linux 内核邮件列表上的一则帖子 ( 描述了形成 Git 的一系列事件 对 Git 史学家而言, 整个的讨论是一个令人着迷的历史探索过程

40 8. Git 的缺点 我避开了对一些 Git 现存问题的讨论 有些可以通过脚本或回调方法轻易地解决, 有些需要重组或重定义项目, 还有少数无解问题, 只能暂时等待 更好的办法是, 投入进来, 一起解决这些问题 我对版本控制系统已经有了一些想法, 并基于 Git 写了一个实验性系统 ( 并解决了一部分问题 8.1. 微软 Windows Git 在微软 Windows 上可能有些繁琐 : Cygwin( 一个 Windows 下的类 Linux 的环境, 里面有一个 Windows 移植 Git( Git on MSys( 是另一个, 要求最小运行时支持, 不过一些命令不能马上工作 8.2. 无关的文件 如果你的项目非常大, 包含很多无关的文件, 而且正在不断改变,Git 可能比其他系统更不管用, 因为独立的文件是不被跟踪的 Git 跟踪整个项目的变更, 这通常才是有益的 一个方案是将你的项目拆成小块, 每个都由相关文件组成 如果你仍然希望在同一个资源库里保存所有内容的话, 可以使用 git submodule 8.3. 谁在编辑什么? 一些版本控制系统在编辑前强迫你显示地用某个方法标记一个文件 尽管这种要求很繁琐, 特别是这个动作需要和中心服务器通讯时 它还是有以下两个好处的 : 1. 比较速度快, 因为只有被标记的文件需要检查 2. 通过查询在中心服务器上谁把某个文件标记为编辑状态, 人员可以获知还有谁正在编辑这个文件 使用适当的脚本, 你也可以使用 Git 达到同样的效果 这要求程序员协同工作, 当他编辑一个文件的时候还要运行特定的脚本 8.4. 文件历史 因为 Git 记录的是项目范围的变更, 重造单一文件的变更历史比其他跟踪单一文件的版本控制系统要稍微麻烦些

41 好在麻烦还不大, 也是值得的, 因为 Git 其他的操作难以置信地高效 例如,git checkout 比 cp -a 都快, 而且项目范围的 delta 压缩也比基于文件 delta 集合的做法好多了 8.5. 初始克隆 当一个项目有相当长度的历史后, 与在其他版本系统里的检出代码相比, 创建一个克隆的开销会大的多 从长时间使用看, 初始的代价还是值得付出的, 因为大多将来的操作将由此变得很快, 并可以离线完成 然而, 在一些情况下, 使用 --depth 创建一个浅克隆比较划算些 这种克隆初始化的更快, 但生成的克隆仅具有较少的功能 8.6. 不稳定的项目 Git 是变更的大小决定写入的速度快慢 一般人做了小的改动就会提交新版本 这里一行臭虫修改, 那里一个新功能, 修改掉的注释等等 但如果你的文件在相邻版本之间存在极大的差异, 那每次提交时, 你的历史记录会以整个项目的大小增长 任何版本控制系统对此都束手无策, 但标准的 Git 用户将遭受更多, 因为一般来说, 历史记录也会被克隆 应该检查一下变更巨大的原因 或许文件格式需要改变一下 小修改应该仅仅导致几个文件的细小改动 又或许, 数据库或备份 / 打包方案才是正选, 而不是版本控制系统 例如, 版本控制就不适宜用来管理网络摄像头周期性拍下的照片 如果这些文件实在需要持续更改, 实在需要版本控制, 一个可能的办法是以中心的方式使用 Git 可以创建浅克隆, 这样检出的较少, 也没有项目的历史记录 当然, 很多 Git 工具就不能用了, 并且修复必须以补丁的形式提交 这也许还不错, 因为似乎没人需要大幅度变化的不稳定文件历史 另一个例子是基于固件的项目, 使用巨大的二进制文件形式 用户对固件文件的变化历史没有兴趣, 更新的压缩比很低, 因此固件修订将使资源库无谓的变大 这种情况, 源码应该保存在一个 Git 资源库里, 二进制文件应该单独保存 为了简化问题, 应该发布一个脚本, 使用 Git 克隆源码, 对固件只做同步或 Git 浅克隆

42 8.7. 全局计数器 一些中心版本控制系统维护一个正整数, 当一个新提交被接受的时候这个整数就增长 Git 则是通过哈希值来记录所有变更, 这在大多数情况下都工作的不错 但一些人喜欢使用整数的方法 幸运的是, 很容易就可以写个脚本, 这样每次更新, 中心 Git 资源库就增大这个整数, 或使用 tag 的方式, 把最新提交的哈希值与这个整数关联起来 每个克隆都可以维护这么个计数器, 但这或许没什么用, 因为只有中心资源库以及它的计数器对每个人才有意义 8.8. 空子目录 空子目录不可追踪 可以通过创建一个空文件以绕过这个问题 Git 的当前实现, 而不是它的设计, 是造成这个缺陷的原因 如果运气好, 一旦 Git 得到更多关注, 更多用户要求这个功能, 这个功能就会被实现 8.9. 初始提交 传统的计算机系统从 0 计数, 而不是 1 不幸的是, 关于提交,Git 并不遵从这一约定 很多命令在初始提交之前都不友好 另外, 一些极少数的情况必须作特别地处理 例如重订一个使用不同初始提交的分支 Git 将从定义零提交中受益 : 一旦一个资源库被创建起来,HEAD 将被设为包含 20 个零字节的字符串 这个特别的提交代表一棵空的树, 没有父节点, 早于所有 Git 资源库 然后运行 git log, 比如, 通知用户至今还没有提交过变更, 而不是报告致命错误并退出 这与其他工具类似 每个初始提交都隐式地成为这个零提交的后代 例如, 重新修订一个不相关的分支将使得整个分支被加入到零提交里 这样, 除了初始提交命令之外的所有命令都会被应用, 这会导致一个合并冲突 一个绕过的办法是在初始提交上紧跟着 git commit -c, 再使用 git checkout, 之后继续重新修订剩下的 不幸的是还有更糟糕的情况 如果把几个具有不同初始提交的分支合并到一起, 之后的重新修订不可避免的需要人员的介入

Git 原理简介 Git 是一种分布式版本控制系统 每个克隆的仓库都包含有整个仓库的所有数据 任何修改先提交在本地, 再推送到服务器 创建和切换分支 合并修改相当方便而且快速 本文档中第一次出现的术语将以蓝色斜体标出 术语的含义是单一的 明确的 不可替代的 1

Git 原理简介 Git 是一种分布式版本控制系统 每个克隆的仓库都包含有整个仓库的所有数据 任何修改先提交在本地, 再推送到服务器 创建和切换分支 合并修改相当方便而且快速 本文档中第一次出现的术语将以蓝色斜体标出 术语的含义是单一的 明确的 不可替代的 1 Git 原理简介 Git 是一种分布式版本控制系统 每个克隆的仓库都包含有整个仓库的所有数据 任何修改先提交在本地, 再推送到服务器 创建和切换分支 合并修改相当方便而且快速 本文档中第一次出现的术语将以蓝色斜体标出 术语的含义是单一的 明确的 不可替代的 1 Git 仓库结构举例 git@my.server:bob/my.git master A B C 2 Git 仓库结构 相对本地已克隆的仓库而言,

More information

What is Version Control? What is Git?

What is Version Control? What is Git? Git Littlebtc (Hsiao-Ting Yu) Scott Chacon Pro Git CC-BY-NC-SA-3.0 What is Version Control? What is Git? Local rcs Server Checkout Commit Subversion SVN Server Server git, Mecurial (hg), bazaar (bzr)

More information

李 琼 评扎迪 史密斯的 白牙 要是他 指艾伯特 加勒比海移民 真的回去 了 那么他将要面临的失败是明摆在那儿的 因为当地并没有发生什么变化 这就是移民的悲剧 他们比他们离弃的故乡变化得更 快 于是他们永远也不可能因回到家乡而感 到幸福 可是 他们在移居的国家也不幸福 因为这不是家乡 瞿世镜

李 琼 评扎迪 史密斯的 白牙 要是他 指艾伯特 加勒比海移民 真的回去 了 那么他将要面临的失败是明摆在那儿的 因为当地并没有发生什么变化 这就是移民的悲剧 他们比他们离弃的故乡变化得更 快 于是他们永远也不可能因回到家乡而感 到幸福 可是 他们在移居的国家也不幸福 因为这不是家乡 瞿世镜 略论英国移民族群认同的发展和走向 李 琼 李 琼 评扎迪 史密斯的 白牙 要是他 指艾伯特 加勒比海移民 真的回去 了 那么他将要面临的失败是明摆在那儿的 因为当地并没有发生什么变化 这就是移民的悲剧 他们比他们离弃的故乡变化得更 快 于是他们永远也不可能因回到家乡而感 到幸福 可是 他们在移居的国家也不幸福 因为这不是家乡 瞿世镜 年 外国文学 第 期 这些天来 我觉得来到这个国家 就像是和魔鬼签了协议

More information

IDEO_HCD_0716

IDEO_HCD_0716 IDEO HCD Toolkit Tencent CDC ...? Tencent CDC Tencent CDC Tencent CDC Tencent CDC Tencent CDC Tencent CDC Tencent CDC Tencent CDC Tencent CDC Tencent CDC Tencent CDC Tencent CDC Tencent CDC Tencent CDC

More information

Xcode 4.6 Dmg File. arts related Airway array tiene saison Site mentored

Xcode 4.6 Dmg File. arts related Airway array tiene saison Site mentored Xcode 4.6 Dmg File ->->->-> http://shurll.com/9xx2x 1 / 5 2 / 5 6,,,months,,,ago,,,... xcode4.6,,,-,,,how,,,download,,,xcode,,,dmg,,,file?,,,-,,,stack,,,overflow,,,xcode4. 6,,,-,,,how,,,download,,,xcode,,,dmg,,,file?,,,-,,,Stack,,,Overflow,,,xcode6_beta2.dmg

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 The BitCoin Scripting Language 交易实例 交易结构 "result": { "txid": "921a dd24", "hash": "921a dd24", "version": 1, "size": 226, "locktime": 0, "vin": [ ], "vout": [ ], "blockhash": "0000000000000000002c510d

More information

Microsoft Word - 在VMWare-5.5+RedHat-9下建立本机QTopia-2.1.1虚拟平台a.doc

Microsoft Word - 在VMWare-5.5+RedHat-9下建立本机QTopia-2.1.1虚拟平台a.doc 在 VMWare-5.5+RedHat-9 下建立 本机 QTopia-2.1.1 虚拟平台 张大海 2008-5-9 一 资源下载 1. 需要以下安装包 : tmake-1.13.tar.gz qtopia-free-source-2.1.1.tar.gz qt-embedded-2.3.10-free.tar.gz qt-x11-2.3.2.tar.gz qt-x11-free-3.3.4.tar.gz

More information

Linux服务器构建与运维管理

Linux服务器构建与运维管理 1 Linux 服务器构建与运维管理 第 2 章 :Linux 基本命令 阮晓龙 13938213680 / rxl@hactcm.edu.cn http://linux.xg.hactcm.edu.cn http://www.51xueweb.cn 河南中医药大学管理科学与工程学科 2018.3 2 提纲 目录与文件的操作 mkdir touch mv cp rm rmdir file tree

More information

Ioncube Php Encoder 8 3 Crack 4. llamaba octobre traslado General Search colony

Ioncube Php Encoder 8 3 Crack 4. llamaba octobre traslado General Search colony Ioncube Php Encoder 8 3 Crack 4 ->>->>->> DOWNLOAD 1 / 5 2 / 5 Press..the..General..Tools..category4Encrypt..and..protect..files..with..PHP..encoding,..encryption,..ob fuscation..and..licensing... 2016

More information

Git 魔法

Git 魔法 Git 魔法 Ben Lynn 2007 年 8 月 前言 Git 堪称版本控制瑞士军刀 这个可靠 多才多艺 用途多样的校订工具异常灵活, 以致不易掌握, 更别说精通了 正如 Arthur C. Clarke 所说, 足够先进的技术与魔法无二 这是学习 Git 的好办法 : 新手不 妨忽略 Git 的内部机理, 只当小把戏玩, 借助 Git 其奇妙的能力, 逗逗朋友, 气气敌人 为了不陷入细节, 我们对特定功能提供大面上的讲解

More information

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1 C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 月 3 日 1 1 INPUTOUTPUT 1 InputOutput 题目描述 用 cin 输入你的姓名 ( 没有空格 ) 和年龄 ( 整数 ), 并用 cout 输出 输入输出符合以下范例 输入 master 999 输出 I am master, 999 years old. 注意 "," 后面有一个空格,"." 结束,

More information

(, : )?,,,,, (, : ),,,, (, ;, ;, : ),,, (, : - ),,, (, : ),,,,,,,,,,,,, -,,,, -,,,, -,,,,,,, ( ), ;, ( ) -,,,,,,

(, : )?,,,,, (, : ),,,, (, ;, ;, : ),,, (, : - ),,, (, : ),,,,,,,,,,,,, -,,,, -,,,, -,,,,,,, ( ), ;, ( ) -,,,,,, : 曹正汉 :, '.,,,., -..,.,,,.,, -., -,,,,,,,,,,,,,,, ( ),,,,,,,?,,?,, ( ), :? (. ) (, ),?, (, : )?,,,,, (, : ),,,, (, ;, ;, : ),,, (, : - ),,, (, : ),,,,,,,,,,,,, -,,,, -,,,, -,,,,,,, ( ), ;, ( ) -,,,,,,

More information

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例 帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例 这篇文章主要介绍了帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例, 本文还详细介绍了帝国 CMS 数据库类中的一些常用方法, 需要的朋友可以参考下 例 1: 连接 MYSQL 数据库例子 (a.php)

More information

* 4 6 R P r p . 1 2 3 4 7 89bk 6 5 1 2 3 4 5 6 7 8 9 0 bk r bl bm bn^ bo bl br bq bpbo bn bm [ ] [ ] [ ] bp 8 2 4 6 bq p [ ] [SET] br clckbt bs bs bt ck cl. 1 2 1 2+- 3 3 . 1 2 3 4 5 6 7 8 9 bk bl bm

More information

Isis Unveiled Pdf Free Download chayanne downgrade london stage militar mapsource

Isis Unveiled Pdf Free Download chayanne downgrade london stage militar mapsource Isis Unveiled Pdf Free Download ->>> DOWNLOAD 1 / 5 2 / 5 全部播放听 Isis,,,,Unveiled 的人也听,,,,Urbana's,,,,Too,,,,Dark,,,,--,,,,Braid,,,, 在线试听,,,,...,,,,,,,,,,,,,,,,,,,,.op_sp_fanyi{font-size:1em;word-break:normal;},,,,,,,,,,,,,,,,.op_sp_fanyi,,,,.op_sp_fanyi_rea

More information

水晶分析师

水晶分析师 大数据时代的挑战 产品定位 体系架构 功能特点 大数据处理平台 行业大数据应用 IT 基础设施 数据源 Hadoop Yarn 终端 统一管理和监控中心(Deploy,Configure,monitor,Manage) Master Servers TRS CRYSTAL MPP Flat Files Applications&DBs ETL&DI Products 技术指标 1 TRS

More information

Kubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7.

Kubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7. Kubernetes 包管理理 工具 Helm 蔺礼强 Kubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7. Kubernetes

More information

一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页

一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页 第 1 页共 32 页 crm Mobile V1.0 for IOS 用户手册 一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页 二 crm Mobile 界面介绍 : 第 3 页共 32 页 三 新建 (New) 功能使用说明 1 选择产品 第 4 页共 32 页 2 填写问题的简要描述和详细描述 第 5 页共

More information

论中日 囚徒困境 的存在及逃逸 马亚华 本文试图用博弈论方法分析中日关系发生困难的原因 并在此基础上提出一点解决问题的思路 目前中日关系已在重复博弈中陷入了 囚徒困境 状态 囚徒困境 不仅为第三方势力提供了渔利的空间 直接损害了两国战略利益 而且其 溢出效应 还损害了全体东亚人民的利益 只有透过中国和平发展的参照系考察中日关系的过去 现在和未来 才能把握当前中日关系困难的本质并找到解决问题的办法 当前中日两国的综合国力基本处于同一层次

More information

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP: ******************* * 关于 Java 测试试题 ******

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP:  ******************* * 关于 Java 测试试题 ****** ******************* * 关于 Java 测试试题 ******************* 問 1 运行下面的程序, 选出一个正确的运行结果 public class Sample { public static void main(string[] args) { int[] test = { 1, 2, 3, 4, 5 ; for(int i = 1 ; i System.out.print(test[i]);

More information

等 的氛围 有利于与受评者深入交流 五 进行修正 接下来 就要根据评估的结果进行目标和策略方案的修订 修订 的内容包括 职业的重新选择 职业生涯路线的选择阶段目标的修正 实施措施与行动计划的变更等等 通过反馈评估和修正 应该达到下列目的 对自己的强项充满自信 我知道我的强项是什么 对自己的发展机会有一个清楚的了解 我知道自己什么地方还 有待改进 找出关键的有待改进之处 为这些有待改进之处制定详细的行为改变计划

More information

Office Office Office Microsoft Word Office Office Azure Office One Drive 2 app 3 : [5] 3, :, [6]; [5], ; [8], [1], ICTCLAS(Institute of Computing Tech

Office Office Office Microsoft Word Office Office Azure Office One Drive 2 app 3 : [5] 3, :, [6]; [5], ; [8], [1], ICTCLAS(Institute of Computing Tech - OfficeCoder 1 2 3 4 1,2,3,4 xingjiarong@mail.sdu.edu.cn 1 xuchongyang@mail.sdu.edu.cn 2 sun.mc@outlook.com 3 luoyuanhang@mail.sdu.edu.cn 4 Abstract. Microsoft Word 2013 Word 2013 Office Keywords:,, HTML5,

More information

}; "P2VTKNvTAnYNwBrqXbgxRSFQs6FTEhNJ", " " string imagedata; if(0!= read_image("a.jpg",imagedata)) { return -1; } string rsp; ytopen_sdk m_sd

}; P2VTKNvTAnYNwBrqXbgxRSFQs6FTEhNJ,   string imagedata; if(0!= read_image(a.jpg,imagedata)) { return -1; } string rsp; ytopen_sdk m_sd tencentyun-youtu c++ sdk for 腾讯云智能优图服务 & 腾讯优图开放平台 安装 运行环境 Linux 依赖项 - curl-7.40.0, 获取更新版本 https://github.com/bagder/curl - openssl-1.0.1k, 获取更新版本 https://github.com/openssl/openssl 构建工程 工程采用 CMake 构建 1.

More information

Microsoft Word - AccessPortal使用手册v3.1.doc

Microsoft Word - AccessPortal使用手册v3.1.doc HighGuard Access Portal 使用手册 地址 : 上海市张江高科技园区松涛路 563 号海外创新园 B 座 301-302 室 电话 : 021-50806229 传真 : 021-50808180 电子邮件 : marketing@highguard.com.cn 第 1 页共 24 页 目录 1. ACCESSPORTAL 概述...4 1.1. AccessPortal 主页面

More information

骨头的故事

骨头的故事 头 1 图 206 33 7 12 5 5 4 12 2 54 10 200-400 3 500 图 类 图 图 动 节 4 5 图 发 图 节 180 Youtube 180 [1] 7 2 7 6 9 270 6 图 树懒 块颈 13-25 14 17 25 7 图 扭头 头鹰 鹅 8 图 红 为 关节 绿 为 关节 9 图 类 10 图 类 11 图 盘 动 类 图 阴 犸 艺 你可能会以为图

More information

sql> startup mount 改变数据库的归档模式 sql> alter database archivelog # 打开数据库 sql> alter database open 禁止归档模式 sql> shutdown immediate sql>startup mount sql> al

sql> startup mount 改变数据库的归档模式 sql> alter database archivelog # 打开数据库 sql> alter database open 禁止归档模式 sql> shutdown immediate sql>startup mount sql> al RMAN sql> sqlplus / as sysdba 查看数据库版本 sql> select * from v$version; 查看数据库名称 sql> show parameter db_name; 一 使用 RMAN 时, 需要将数据库设置成归档模式 sql> conn / as sysdba; sql> show user 查看数据库是否为归档模式 sql> archive log list

More information

引言 从古至今, 人们一直梦想着拥有点石成金的能力 其实在现实生活中, 从来不乏这样的例子 人们都认为过时的 PC 电脑配件是积压废品, 迈克尔戴尔却低价收购改装升级后转手卖出, 赚得了自己的第一桶金 人们都认为免费聊天工具是赔本赚吆喝, 腾讯却从草根出身的 QQ 起家, 成为亚洲市值最高的互联网公司 人们都认为常旅客里程是航空公司的成本, 航空公司却通过常旅客里程销售获得超过 50% 的附加收入

More information

01

01 Zebra Technologies 白皮书 移动打印给仓储运营带来显著优势 综述 RFID RFID (RF) RFID RFID / ROI LAN 采用移动打印机, 享受显而易见的业务成效 - 49.74 28.11 Zebra 2 Zebra Technologies 移动打印机成本效益分析 示例数据固定式打印机移动打印机每年节省资金 10 10 8 8 48 48 3840 3840 15

More information

MASQUERADE # iptables -t nat -A POSTROUTING -s / o eth0 -j # sysctl net.ipv4.ip_forward=1 # iptables -P FORWARD DROP #

MASQUERADE # iptables -t nat -A POSTROUTING -s / o eth0 -j # sysctl net.ipv4.ip_forward=1 # iptables -P FORWARD DROP # iptables 默认安全规则脚本 一 #nat 路由器 ( 一 ) 允许路由 # iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT ( 二 ) DNAT 与端口转发 1 启用 DNAT 转发 # iptables -t nat -A PREROUTING -p tcp -d 192.168.102.37 dprot 422 -j DNAT to-destination

More information

论文,,, ( &, ), 1 ( -, : - ), ; (, ), ; ;, ( &, ),,,,,, (, ),,,, (, ) (, ),,, :. : ( ), ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ), ( ),,,, 1 原译作 修补者, 但在英译版本中, 被译作

论文,,, ( &, ), 1 ( -, : - ), ; (, ), ; ;, ( &, ),,,,,, (, ),,,, (, ) (, ),,, :. : ( ), ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ), ( ),,,, 1 原译作 修补者, 但在英译版本中, 被译作 * 夏传玲 : 本文简要回顾了国内外定性研究在最近 多年的发展概况, 总结 了定性研究的六个发展趋势和分析策略上的三种流派 在上述两种背景下, 本文探讨了计算机辅助的定性分析给定性研究带来的机遇和挑战, 特别是它和手工操作对比时的优势和劣势, 以及应用这种定性分析技术所可能面临的困难 : 定性研究定性分析 文化差异,, (, ),,,, ( - ) ( - ) ( - ) ( - ) ( - ) (

More information

Microsoft Word - PS2_linux_guide_cn.doc

Microsoft Word - PS2_linux_guide_cn.doc Linux For $ONY PlayStatioin2 Unofficall General Guide Language: Simplified Chinese First Write By Beter Hans v0.1 Mail: hansb@citiz.net Version: 0.1 本 人 是 菜 鸟 + 小 白 欢 迎 指 正 错 误 之 处, 如 果 您 有 其 他 使 用 心 得

More information

Git自下而上方法[译]

Git自下而上方法[译] zhabgyuan1993 July 28, 2013 Contents 译 者 4 1 Contents 这 本 书 讲 解 思 路 着 实 清 晰 因 此 有 了 翻 译 本 书 的 念 头 被 网 友 评 选 为 10 大 Git 入 门 学 习 资 料 的 本 书 不 是 只 讲 解 较 高 层 面 的 Git 命 令 的 书 籍 这 本 书, 短 短 30 余 页, 确 实 是 入 门 精

More information

Converting image (bmp/jpg) file into binary format

Converting image (bmp/jpg) file into binary format RAiO Image Tool 操作说明 Version 1.0 July 26, 2016 RAiO Technology Inc. Copyright RAiO Technology Inc. 2013 RAiO TECHNOLOGY INC. www.raio.com.tw Revise History Version Date Description 0.1 September 01, 2014

More information

内容概要 1 Git 简介 2 基本用法 3 SVN 转 Git 4 协同开发 5 在线浏览 6 相关技巧 7 相关资料 Hello, The Git World 2013 年 6 月 1 日 2 / 35

内容概要 1 Git 简介 2 基本用法 3 SVN 转 Git 4 协同开发 5 在线浏览 6 相关技巧 7 相关资料 Hello, The Git World 2013 年 6 月 1 日 2 / 35 Hello, The Git World Wu Zhangjin / Falcon wuzhangjin@gmail.com Tiny Lab 泰晓实验室 http://tinylab.org 2013 年 6 月 1 日 Hello, The Git World 2013 年 6 月 1 日 1 / 35 内容概要 1 Git 简介 2 基本用法 3 SVN 转 Git 4 协同开发 5 在线浏览

More information

重勘信息的哲学含义 ¼ ½ ¾ ¼ ½ ¾

重勘信息的哲学含义 ¼ ½ ¾ ¼ ½ ¾ 重勘信息的哲学含义 肖 峰 信息不能以任何方式归结为物质 它既不是物质内在既成的东西 也不是纯粹的自然现象 更不是可以离开主体而独立存在的纯客观现象或无处不在的普遍现象 哲学含义上的信息是一种非物质的存在 是主体对对象的感知 辨识和建构 也是生命控制系统尤其是神经系统的一种机能 信息与 意义 关联 是一种属人的认识现象 不存在所谓的 本体论信息 而只存在认识论意义上的信息 信息的哲学含义应与信息的日常用法具有连续性

More information

工程项目进度管理 西北工业大学管理学院 黄柯鑫博士 甘特图 A B C D E F G 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 甘特图的优点 : 直观明了 ( 图形化概要 ); 简单易懂 ( 易于理解 ); 应用广泛 ( 技术通用 ) 甘特图的缺点 : 不能清晰表示活动间的逻辑关系 WBS 责任分配矩阵 ( 负责〇审批

More information

Microsoft Word - 4danalysis-pt3-p2-9.doc

Microsoft Word - 4danalysis-pt3-p2-9.doc TECHNIQUES & METHODS OF 4D ANALYSIS (Part III) 4-D Master, Charles In Part II, I presented the performance (hit rates) of the Most Frequent, Top-10 4D numbers over the last 15 years, ie., from 1 Jan 1996

More information

Microsoft PowerPoint - 01_Introduction.ppt

Microsoft PowerPoint - 01_Introduction.ppt Hello, World C 程序设计语言 第 1 章章观其大略 孙志岗 sun@hit.edu.cn http://sunner.cn prf("hello,, world\n"); 超级无敌考考你 : 如何把 hello 和 world 分别打印在两行? 2004-12-19 A Tutorial Introduction 2 hello.c 打印华氏温度与摄氏温度对照表 计算公式 : C=(5/9)(

More information

六域链联盟 SDChain-Matrix 节点搭建指南 2018/07/26 Version : 1.0.0

六域链联盟 SDChain-Matrix 节点搭建指南 2018/07/26 Version : 1.0.0 SDChain-Matrix 节点搭建指南 目录 1 环境要求... 3 2 软件下载... 4 3 安装部署... 4 3.1 部署可执行程序目录... 4 3.2 部署配置文件目录... 4 3.3 部署数据库文件目录... 4 3.4 部署日志文件目录... 4 3.5 部署依赖库文件目录... 4 4 配置参数... 5 5 启动运行... 7 5.1 普通模式启动... 7 5.2 加载启动模式...

More information

手册 doc

手册 doc 1. 2. 3. 3.1 3.2 3.3 SD 3.4 3.5 SD 3.6 3.7 4. 4.1 4.2 4.3 SD 4.4 5. 5.1 5.2 5.3 SD 6. 1. 1~3 ( ) 320x240~704x288 66 (2G SD 320x2401FPS ) 32M~2G SD SD SD SD 24V DC 3W( ) -10~70 10~90% 154x44x144mm 2. DVR106

More information

CC213

CC213 : (Ken-Yi Lee), E-mail: feis.tw@gmail.com 9 [P.11] : Dev C++ [P.12] : http://c.feis.tw [P.13] [P.14] [P.15] [P.17] [P.23] Dev C++ [P.24] [P.27] [P.34] C / C++ [P.35] 10 C / C++ C C++ C C++ C++ C ( ) C++

More information

chap07.key

chap07.key #include void two(); void three(); int main() printf("i'm in main.\n"); two(); return 0; void two() printf("i'm in two.\n"); three(); void three() printf("i'm in three.\n"); void, int 标识符逗号分隔,

More information

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double

More information

aurora 3d barcode generator crack

aurora 3d barcode generator crack Aurora 3d Barcode Generator Crack ->->->-> DOWNLOAD 1 / 5 2 / 5 ...Please...be...aware...that...Brothersoft...do...not...sup... Aurora...3D...Barcode...Generator...3.11.09...+...Portable......14...MB...Export...barcode...or...qr...code...to...images...or...copy,...or...batch...gener

More information

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.06.doc

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.06.doc 2 5 8 11 0 13 1. 13 2. 15 3. 18 1 23 1. 23 2. 26 3. 28 2 36 1. 36 2. 39 3. 42 4. 44 5. 49 6. 51 3 57 1. 57 2. 60 3. 64 4. 66 5. 70 6. 75 7. 83 8. 85 9. 88 10. 98 11. 103 12. 108 13. 112 4 115 1. 115 2.

More information

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 ->

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 -> 目录 1 大概思路... 1 2 创建 WebAPI... 1 3 创建 CrossMainController 并编写... 1 4 Nuget 安装 microsoft.aspnet.webapi.cors... 4 5 跨域设置路由... 4 6 编写 Jquery EasyUI 界面... 5 7 运行效果... 7 8 总结... 7 1 1 大概思路 创建 WebAPI 创建 CrossMainController

More information

epub 63-3

epub 63-3 3 Solaris S o l a r i s S o l a r i s 2 S o l a r i s s h e l l p a s s w d v i l s c a t p g m o r e r m 3.1 3.1.1 c p c p c o p y c p c p cp source-file destination-file s o u r c e - f i l e c p d e

More information

赵燕菁 #!!!

赵燕菁 #!!! 赵燕菁 城市规划在灾后重建中对于工程技术的关注 很容易掩盖城市灾后重建中看不见的制度因素!!! 产权 城市最基本的制度 原型 # 就是公共产品交易的存在 城市 发达 # 与否 取决于公共产品提供的范围和水平 现代城市和传统城市的最大差别 就是可以以信用的方式 抵押未来的收益 获得公共产品建设所需要的原始资本 市场经济与计划经济最大的差别 就在于高度复杂的产权制度 因此 未来灾区规划中 产权的恢复和重建

More information

* r p . 4 6 12 3 5 7 8 9bk bm btbsbrbqbp bo bn bl [ ] [ ] [ ] [ ] [SET] 1 2 3 4 5 6 7. cmcl ck 8 9 0 bk bl bm bn bo 1 2 1 2+ - bp bq 8 2 4 6 br r bs p bt ck cl cm 3 3 . 1 2 3 4 5 6 7 8 9 bk bl bm

More information

C++ 程序设计 告别 OJ2 - 参考答案 MASTER 2019 年 5 月 3 日 1

C++ 程序设计 告别 OJ2 - 参考答案 MASTER 2019 年 5 月 3 日 1 C++ 程序设计 告别 OJ2 - 参考答案 MASTER 2019 年 5 月 3 日 1 1 TEMPLATE 1 Template 描述 使用模板函数求最大值 使用如下 main 函数对程序进行测试 int main() { double a, b; cin >> a >> b; cout c >> d; cout

More information

Apache CarbonData集群模式使用指南

Apache CarbonData集群模式使用指南 我们在 Apache CarbonData 快速入门编程指南 文章中介绍了如何快速使用 Apache CarbonData, 为了简单起见, 我们展示了如何在单机模式下使用 Apache CarbonData 但是生产环境下一般都是使用集群模式, 本文主要介绍如何在集群模式下使用 Apache CarbonData 启动 Spark shell 这里以 Spark shell 模式进行介绍,master

More information

Eclipse C C++, or

Eclipse C C++,  or Eclipse C C++, Emailctchen@pl.csie.ntut.edu.tw or s1669021@ntut.edu.tw, s2598003@ntut.edu.tw http://pl.csie.ntut.edu.tw/~ctchen, http://www.ntut.edu.tw/~s2598003/ 2004/9/10 (0.02 ) Eclipse http://www.eclipse.org

More information

A9RF716.tmp

A9RF716.tmp 1 PART I 1 2 3 4 5 6 7 8 Docker Docker Image Container Repository Docker le Docker Docker 8 1 Docker Linux 2 Docker Docker 3 5 Docker 6 Docker volume 7 8 Docker le Docker le 1 C H A P T E R 1 CPU Data

More information

如何掌控你的时间 了解自己的黄金时间 寻找事情的关键步骤 将事情分类处理 化零为整 懂得强化自己 这个假期有点荒废

如何掌控你的时间 了解自己的黄金时间 寻找事情的关键步骤 将事情分类处理 化零为整 懂得强化自己 这个假期有点荒废 YANYUAN VOICE 本期导读 燕园组讯 如何掌控你的时间 了解自己的黄金时间 寻找事情的关键步骤 将事情分类处理 化零为整 懂得强化自己 这个假期有点荒废 永远的分配问题 为什么看重公平? 作为假设的公平 作为期望的公平 不要说应该公平 所谓公平 我眼中的猫 说 纭 卡丢了以后 : 卡奴 的悲哀 众里寻 Ta 你疯了吗? 失败恐惧吞钩现象 信任 濛濛 一眼就看见你, 水瓶 请找出右边两幅图中

More information

ebook8-30

ebook8-30 3 0 C C C C C C++ C + + C++ GNU C/C++ GNU egcs UNIX shell s h e l l g a w k P e r l U N I X I / O UNIX shell awk P e r l U N I X C C C C C C U N I X 30.1 C C U N I X 70 C C U N I X U N I X U N I X C Dennis

More information

Linux 操作系统与程序开发环境 卢脁 Parallel Computing WHY Linux 的安装 系统管理 linux 的基本命令与概念 Linux 操作系统与程序开发环境 Linux Operating System and Programming Environment 卢脁 Depa

Linux 操作系统与程序开发环境 卢脁 Parallel Computing WHY Linux 的安装 系统管理 linux 的基本命令与概念 Linux 操作系统与程序开发环境 Linux Operating System and Programming Environment 卢脁 Depa Linux Operating System and Programming Environment Department of Science and Engineering School of Mathematics School Peking University August 14, 2007 1 2 3 4 框架 1 2 3 4 当前流行的并行计算主要由结点上安装 Linux 操作系统的

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 Linux 操 作 系 统 基 础 介 绍 课 程 目 标 及 要 求 了 解 Linux 操 作 系 统 的 登 入 方 式 掌 握 常 用 命 令 的 基 本 用 法 能 够 熟 练 在 各 个 目 录 转 换 Outline 1. Linux 操 作 系 统 简 介 2. Linux 操 作 系 统 的 登 录 3. Linux 操 作 系 统 的 目 录 结 构 4. 常 用 命 令 5.

More information

xforce keygen microsoft office 2013

xforce keygen microsoft office 2013 Xforce Keygen Microsoft Office 2013 ->->->-> http://shurll.com/78610 1 / 5 2 / 5 Generally, Autodesk,,Vault,,Office,,2016,,555H1,,Autodesk,,Vault,,Professional,,2016,,569H1,,Autode sk,,vault,,workgroup,,2016,,559h1,,autodesk,,vehicle,,tracking,,2016,,955h1,,autodesk,,vred...

More information

gta 5 serial key number pciker

gta 5 serial key number pciker Gta 5 Serial Key Number Pciker >>> http://shurll.com/7nott 1 / 5 2 / 5 Keep..rea... 2016 年 1 月 3 日 - download..gta..5..serial..number..of..the..most..exclusive..pageviews..selforganizing..ngos,..live..stories..and..easy..policies..regarding..to..containing..my...

More information

Microsoft Word - linux命令及建议.doc

Microsoft Word - linux命令及建议.doc Linux 操 作 系 统 命 令 集 1 基 本 命 令 查 看 系 统 信 息 : uname -a 修 改 密 码 : passwd 退 出 : logout(exit) 获 取 帮 助 : man commands 2 文 件 和 目 录 命 令 显 示 当 前 工 作 目 录 : pwd 改 变 所 在 目 录 : cd cd - 切 换 到 上 一 次 使 用 的 目 录 cd 切 换

More information

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 odps-sdk 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基 开放数据处理服务 ODPS SDK SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基础功能的主体接口, 搜索关键词 "odpssdk-core" 一些

More information

静态分析 投放文件 行为分析 互斥量 (Mutexes) 执行的命令 创建的服务 启动的服务 进程 cmd.exe PID: 2520, 上一级进程 PID: 2556 cmd.exe PID: 2604, 上一级进程 PID: 2520 访问的文件 C:\Users\test\AppData\Lo

静态分析 投放文件 行为分析 互斥量 (Mutexes) 执行的命令 创建的服务 启动的服务 进程 cmd.exe PID: 2520, 上一级进程 PID: 2556 cmd.exe PID: 2604, 上一级进程 PID: 2520 访问的文件 C:\Users\test\AppData\Lo 魔盾安全分析报告 分析类型 开始时间 结束时间 持续时间 分析引擎版本 FILE 2016-11-25 00:20:03 2016-11-25 00:22:18 135 秒 1.4-Maldun 虚拟机机器名 标签 虚拟机管理 开机时间 关机时间 win7-sp1-x64 win7-sp1-x64 KVM 2016-11-25 00:20:03 2016-11-25 00:22:18 魔盾分数 0.0

More information

就业办口袋书

就业办口袋书 3 喜欢就是喜欢 兴趣其实很简单 人和人都是不一样的 每个人都有不一样的特质 兴趣是与带有某种遗传特征的天赋联系在一起的 所以每个人的兴趣所在必然不尽相同 真正的兴趣是你在做某件事情的时候 可以进入一 种忘我的投入状态 并达到身心愉悦的一种倾向 真 正的兴趣是抽掉了功利色彩的一种本能 与天赋休戚相 关 而不能掉入将社会的功利化作为判断标准的误 区 撇开浮云 喜欢就是喜欢 才是兴趣的本真 问题二 兴趣在哪里

More information

2009 年第 6 期 高清总动员 35

2009 年第 6 期 高清总动员 35 要说 08 年最成功的高清机, 非三合一 F1/F2 莫属 它集中了国内不同的高清接收需求, 整合了当时能想到的各种功能, 为欣赏高清奥运, 满足高端发烧人士, 做出了贡献 F1/F2 的成功, 说明不依赖进口, 我们也有能力打造顶级的高清机, 并且更适合国内的使用习惯 不过, 即使 F1/F2 的终极版, 也不兼容 ABS-S 或 ISDB-S, 没有网络功能, 不能 USB 录像等等, 有一定的局限性

More information

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double x) { d

More information

Acer E 15 Graphics Driver Download. Mexico motor Picture redes original Jorge montana

Acer E 15 Graphics Driver Download. Mexico motor Picture redes original Jorge montana Acer E 15 Graphics Driver Download >>> DOWNLOAD 1 / 5 2 / 5 Get...all...the...data...for...your...required...driver...including...models,...availability...and...OS..... Drivers...for...direct...download...are...uploaded...daily...and...rated...by...our...usersWorld'

More information

HD ( ) 18 HD ( ) 18 PC 19 PC 19 PC 20 Leica MC170 HD Leica MC190 HD 22 Leica MC170 HD Leica MC190 HD Leica MC170 HD

HD ( ) 18 HD ( ) 18 PC 19 PC 19 PC 20 Leica MC170 HD Leica MC190 HD 22 Leica MC170 HD Leica MC190 HD Leica MC170 HD Leica MC170 HD Leica MC190 HD 5 6 7 8 11 12 13 14 16 HD ( ) 18 HD ( ) 18 PC 19 PC 19 PC 20 Leica MC170 HD Leica MC190 HD 22 Leica MC170 HD Leica MC190 HD 22 23 24 26 Leica MC170 HD Leica MC190 HD ( ) 28

More information

Ø Ø fi» ` ˆ ˇ `ƒ»» `ƒ` `

Ø Ø fi» ` ˆ ˇ `ƒ»» `ƒ` ` » œ» ł ˇ ˆæ Ø Ø fi» ` ˆ ˇ `ƒ»» `ƒ` ` 责 任 篇 放羊干嘛 挣钱 挣钱干嘛 娶婆姨 娶婆姨干嘛 生娃 生娃干嘛 放羊 感想 多么流畅的对话 多么自然的循环 当然 这也是一种生活方式 但 是一个民族要发展 仅仅依靠这种原始的生活方式是远远不够的 有一句格言说得好 生命的悲哀不在于目标未达到 而在于没有目标 可达成 在那没有智慧之光照耀的地方

More information

F515_CS_Book.book

F515_CS_Book.book /USB , ( ) / L R 1 > > > 2, / 3 L 1 > > > 2 + - 3, 4 L 1 了解显示屏上显示的图标 Wap 信箱收到一条 Wap push 信息 ( ) GSM 手机已连接到 GSM 网络 指示条越多, 接收质量越好 2 ...........................4.............................. 4 Micro SD (

More information

ChinaBI企业会员服务- BI企业

ChinaBI企业会员服务- BI企业 商业智能 (BI) 开源工具 Pentaho BisDemo 介绍及操作说明 联系人 : 杜号权苏州百咨信息技术有限公司电话 : 0512-62861389 手机 :18616571230 QQ:37971343 E-mail:du.haoquan@bizintelsolutions.com 权限控制管理 : 权限控制管理包括 : 浏览权限和数据权限 ( 权限部分两个角色 :ceo,usa; 两个用户

More information

X713_CS_Book.book

X713_CS_Book.book / / /USB ) ; ; C D ; ; B B 1 >> 2 3 B 1 ( > > ) 了解显示屏上显示的图标 Wap 信箱收到一条 Wap push 信息 GSM GPS ( ) 手机已连接到 GSM 网络 指示条越多, 接收质量越好 GPS 2 ...........................4.............................. 4 Micro SD (

More information

lect03.ppt

lect03.ppt Linux 操 作 系 统 Linux 基 础 主 要 内 容 q 使 用 Linux q Linux 的 两 种 登 录 方 式 q 字 符 操 作 环 境 和 X Windows 系 统 q Linux 图 形 界 面 基 本 操 作 q Linux 命 令 的 使 用 方 式 q Linux 一 些 常 用 命 令 1 2 一 些 基 本 术 语 u 命 令 (Command) 给 计 算 机

More information

计算机网络实验说明

计算机网络实验说明 计算机网络实验说明 龚旭东 电三楼 420 lzgxd@mailustceducn 2011 年 11 月 1 日 龚旭东 (TA) 计算机网络实验说明 2011 年 11 月 1 日 1 / 20 Outline 1 实验系统介绍 实验环境实验流程 2 实验内容编程实验交互实验观察实验 3 一些控制台命令 4 实验报告说明 龚旭东 (TA) 计算机网络实验说明 2011 年 11 月 1 日 2

More information

本文由筱驀釹贡献

本文由筱驀釹贡献 本 文 由 筱 驀 釹 贡 献 ppt 文 档 可 能 在 WAP 端 浏 览 体 验 不 佳 建 议 您 优 先 选 择 TXT, 或 下 载 源 文 件 到 本 机 查 看 Linux 操 作 系 统 Linux 操 作 系 统 第 一 部 分 介 绍 与 安 装 Linux 的 由 来 : Linux 的 由 来 : 的 由 来 Linus Torvalds 1.Linux 的 版 本 1.Linux

More information

HP and Canon 单色通用芯片表 SCC 芯片 图片 HP 700 M712, 700 M725 CF214X (14X) 17.5 HP 5200 Q7516A U16-2CHIP SSS 846 芯片记号 (U16-2) Canon LBP-3500, LBP-3900, LBP-392

HP and Canon 单色通用芯片表 SCC 芯片 图片 HP 700 M712, 700 M725 CF214X (14X) 17.5 HP 5200 Q7516A U16-2CHIP SSS 846 芯片记号 (U16-2) Canon LBP-3500, LBP-3900, LBP-392 HP and Canon 单色通用芯片表在线访问我们的网站, 可以得到更多的信息 : www.scc-inc.com/chipcenter 全部开始都是专利通用芯片一个芯片, 多个不同型号的硒鼓 注意 : 当在这个文档上要寻找一个特殊的 或打印机的型号时, 在你的键盘上同时按 CTRL 键和 F 键就能搜索到 HP and Canon 单色通用芯片表 SCC 芯片 图片 HP 700 M712, 700

More information

华恒家庭网关方案

华恒家庭网关方案 LINUX V1.5 1 2 1 2 LINUX WINDOWS PC VC LINUX WINDOWS LINUX 90% GUI LINUX C 3 REDHAT 9 LINUX PC TFTP/NFS http://www.hhcn.com/chinese/embedlinux-res.html minicom NFS mount C HHARM9-EDU 1 LINUX HHARM9-EDU

More information

¼ ½ ¾ ¼ ½ ¾

¼ ½ ¾ ¼ ½ ¾ 回归传统 历史学视野中的资本主义 刘光临 虽然明清资本主义萌芽研究和西方现代史学都使用了资本主义一词 但双方并无相同的理论背景 资本主义作为一个成熟的学科概念是由 世纪末 世纪初的历史学家和强调历史面向的政治经济学家 可简称为 德国历史学派 一起创造出来的 强调从历史而不是从抽象的理论中寻求社会变化的原因 资本主义萌芽这一概念的启用 实际上是对欧洲近代历史的严重误读 有鉴于此 在今后的中国历史研究中应该用资本主义来取代资本主义萌芽

More information

Microsoft Word - TASK1-LAB4-AUTOtools.doc

Microsoft Word - TASK1-LAB4-AUTOtools.doc GNU autotools 1. 介绍大部分时候, 你从网上下载了一个开放源代码的软件, 在解压后, 你一般会敲入以下三个命令来编译和安装你的程序 : 1)./configure 2) make 3) make install 其中,configure 脚本分析你的系统以找到合适的工具和库,make 是真正用来编译构建软件的工具,make install 来安装软件 在开放源代码世界,configure

More information

翟永明 台静农是 世纪 年代重要的乡土作家 地之子 奠定了其在文学史上的地位 无论在叙述方式 细节描写上 还是在人物语言及风俗描写上 地之子 中的作品均独具特色 从而建构起一个色彩斑斓的 羊镇世界 并折射出作者以及那个时代乡土作家们相似的心理特征 台静农 地之子 大娘 我有点事 就是 她未说 出又停住了 真是丑事 现在同汪二这样了 大娘 真是丑事 如今有了四个月的胎 她头是深深地低着 声音也随之低微

More information

93年各縣國中教師甄試最新考情.doc

93年各縣國中教師甄試最新考情.doc 93 7/8()~7/13() 7/11()~7/13() 7/17() 7/18() 7/18() 7/19() 7/21() 40% 20%( ( )) 20%( ) 1 35% 25% ( ) 70% 10%( ) 60% 1 20% 10% ( ) 6/1()~6/11() 6/12()~6/14() 6/19() 6/21() 6/26() 6/26()22:00 7/3() 40%( )

More information

4 8 3+1 8 1 15 15 8 1 2 8 1 2 " = " = " = " = " = " = 形容样貌 那个哥哥长得就像卡通 片里的大英雄一样高大 从台上望下去 观众 席就像一片皑皑白雪 写作技巧 照应式 评价式 疑问式 俗语式 助人为乐 照应式 这就是助人为乐 评价式 经过这件事后 我明白了助人为 乐这个道理 疑问式 帮助人原来是件 快乐的事 不是 吗 俗语式

More information

C/C++ - 字符输入输出和字符确认

C/C++ - 字符输入输出和字符确认 C/C++ Table of contents 1. 2. getchar() putchar() 3. (Buffer) 4. 5. 6. 7. 8. 1 2 3 1 // pseudo code 2 read a character 3 while there is more input 4 increment character count 5 if a line has been read,

More information

Fig1 Theforceappliedtothetrainwhenrunning :w = w j +w q (3) :w = w = w 0 +w j (4) w i 121 基本阻力 w r = 600 R ( N/kN) (8) :R : [2] w s [3] w s =0

Fig1 Theforceappliedtothetrainwhenrunning :w = w j +w q (3) :w = w = w 0 +w j (4) w i 121 基本阻力 w r = 600 R ( N/kN) (8) :R : [2] w s [3] w s =0 31 4 2012 8 JournalofLanzhouJiaotongUniversity Vol31No4 Aug2012 :1001-4373(2012)04-0097-07 * 张友兵 张 波 ( 100073) : 分析了列车运行过程中的受力情况 给出了制动过程中减速度的计算方法 并采用正向 反向两种迭代方式计算列车制动曲线 两种方式计算出的制动曲线一致 证明了计算制动曲线的方法是正确的

More information

ebook62-1

ebook62-1 1 Red Hat Linux R e d Hat Linux L i n u x X Wi n d o w Red Hat L i n u x 1.1 Red Hat Linux Red Hat 16 M 120 M 3. 5 Intel 386 C D - R O M C D - R O M We b / 1.1.1 L i n u x L i n u 4 Primary Partition Extended

More information

我不知道你看了这个贴的理解有多深 我想尝试用我的角度为你导读, 希望你也用心体悟 原本的我们, 有满满的希望和能力去爱 不断去期待那个他会出现 而他未出现前, 自己还是开心的那个自己 初恋并不是那么难在一起的事情, 瓶子因为期待那个 他, 而金鱼又需要水 ( 象征追求 ) 于是, 你便给了他一个机会

我不知道你看了这个贴的理解有多深 我想尝试用我的角度为你导读, 希望你也用心体悟 原本的我们, 有满满的希望和能力去爱 不断去期待那个他会出现 而他未出现前, 自己还是开心的那个自己 初恋并不是那么难在一起的事情, 瓶子因为期待那个 他, 而金鱼又需要水 ( 象征追求 ) 于是, 你便给了他一个机会 我不知道你看了这个贴的理解有多深 我想尝试用我的角度为你导读, 希望你也用心体悟 原本的我们, 有满满的希望和能力去爱 不断去期待那个他会出现 而他未出现前, 自己还是开心的那个自己 初恋并不是那么难在一起的事情, 瓶子因为期待那个 他, 而金鱼又需要水 ( 象征追求 ) 于是, 你便给了他一个机会 ( 仿佛你救了他 ) 女人的初恋一开始时是一个十分难忘和甜蜜的事情 鱼跳进瓶子, 扑通., 瓶子的心也紧张地跳

More information

ESOL-CN-Bleed.pub

ESOL-CN-Bleed.pub NZCB Discover New Zealand BELIEVE YOU CAN www.nzcb.ac.nz ,, 我非常喜欢这里, 我在这里得到了很多的帮助, 谢谢学校为我提供这么好的学习环境和升学机会, 因此我也强烈推荐我的朋友们也来 NZCB 学习国际英文 (IESOL) 课程 - 黎曦 ( 中国 ) 在 NZCB 学习期间我的收获非常大, 不止是英语能力的提升, 还让我更加熟悉新西兰,

More information

像 客 样 使 命令行 徐 东

像 客 样 使 命令行 徐 东 像 客 样 使 命令行 徐 东 1 1.1................................ 1 1.2................................. 3 1.3............................. 4 1.3.1 Linux............................ 5 1.3.2 macos............................

More information

日本学刊 年第 期 #!! #

日本学刊 年第 期 #!! # 战时文化统制与日本文化的现代转型 尚 侠 战时文化统制和 大政翼赞 统制经济三位一体 是日本法西斯国家体制的一个重要而有机的构成 就国民意识整合的本质而言 它是膨胀的 扩大化了的国家主义 文化统制作为政府主导下的一种文化强制力量 割断了日本文化向现代转型的历史进程 导致了日本民族精神的某种惯性模式与病态现实 日本 战时 文化统制 文化转型!! 日本学刊 年第 期 #!! # 战时文化统制与日本文化的现代转型

More information

01

01 ZEBRA 技术白皮书 条码编码 101 相关知识介绍 引言 20 70 数据 80 20 90 (JIT) AIAG EIA HIBCC HAZMAT 条码的优势提高数据准确性 99% 85% / / 提升效率 / 2 Zebra Technologies 保持一致性 ID 改进库存和资产管理 成本 / 效益分析 ID ID ID (ERP) RFID Zebra Technologies 3 ID

More information

ebook70-5

ebook70-5 5 / 5.1 L i n u x L i n u x X L i n u x 5.1.1 touch t o u c h t o u c h G N U t o u c h # touch newfile # ls -l newfile - r w - r - - r - - 1 bball users 0 Jan 5 12 : 40 n e w f i l e t o u c h 0 # > newfile2

More information

AL-M200 Series

AL-M200 Series NPD4754-00 TC ( ) Windows 7 1. [Start ( )] [Control Panel ()] [Network and Internet ( )] 2. [Network and Sharing Center ( )] 3. [Change adapter settings ( )] 4. 3 Windows XP 1. [Start ( )] [Control Panel

More information

第四章 102 图 4唱16 基于图像渲染的理论基础 三张拍摄图像以及它们投影到球面上生成的球面图像 拼图的圆心是相同的 而拼图是由球面图像上的弧线图像组成的 因此我 们称之为同心球拼图 如图 4唱18 所示 这些拼图中半径最大的是圆 Ck 最小的是圆 C0 设圆 Ck 的半径为 r 虚拟相机水平视域为 θ 有 r R sin θ 2 4畅11 由此可见 构造同心球拼图的过程实际上就是对投影图像中的弧线图像

More information

Autodesk Product Design Suite Standard 系统统需求 典型用户户和工作流 Autodesk Product Design Suite Standard 版本为为负责创建非凡凡产品的设计师师和工程师提供供基本方案设计和和制图工具, 以获得令人惊叹叹的产品

Autodesk Product Design Suite Standard 系统统需求 典型用户户和工作流 Autodesk Product Design Suite Standard 版本为为负责创建非凡凡产品的设计师师和工程师提供供基本方案设计和和制图工具, 以获得令人惊叹叹的产品 Autodesk Product Design Suite Standard 20122 系统统需求 典型用户户和工作流 Autodesk Product Design Suite Standard 版本为为负责创建非凡凡产品的设计师师和工程师提供供基本方案设计和和制图工具, 以获得令人惊叹叹的产品设计 Autodesk Product Design Suite Standard 版本包包括以下软件产产品

More information

Chapter #

Chapter # 第三章 TCP/IP 协议栈 本章目标 通过本章的学习, 您应该掌握以下内容 : 掌握 TCP/IP 分层模型 掌握 IP 协议原理 理解 OSI 和 TCP/IP 模型的区别和联系 TCP/IP 介绍 主机 主机 Internet TCP/IP 早期的协议族 全球范围 TCP/IP 协议栈 7 6 5 4 3 应用层表示层会话层传输层网络层 应用层 主机到主机层 Internet 层 2 1 数据链路层

More information

<4D F736F F D20B5DAC8FDCBC4D5C2D7F7D2B5B4F0B0B82E646F63>

<4D F736F F D20B5DAC8FDCBC4D5C2D7F7D2B5B4F0B0B82E646F63> 第三章 Q3 1 1. 省略了 I/O 操作的复杂逻辑, 易实现, 耗费低 ; 2. 可以利用丰富的内存寻址模式实现灵活的 I/O 操作 Q3 2 假设存储单元 ds1 处寄存器地址为 0x2000, 代码如下 #define ds1 0x2000 while ( *ds1 == 0 ) ; Q3 3 假设设备 (dev1) 中有两个寄存器 ds1 和 dd1,dev1 的地址为 0x1000,ds1

More information

2014 年 87 月 259 日 K-HW508K / HW516K K-NL408K / NL416K 最新固件版本 :V3.200 容量 供应商 系列 型号 格式 可用性 兼容性能 备注 500G Seagate Pipeline HD2 ST CS - 可用 Seagate Pi

2014 年 87 月 259 日 K-HW508K / HW516K K-NL408K / NL416K 最新固件版本 :V3.200 容量 供应商 系列 型号 格式 可用性 兼容性能 备注 500G Seagate Pipeline HD2 ST CS - 可用 Seagate Pi 纠正点从 2014 年 5 月 12 日的版本开始 我们缺少的 4TB 硬盘的型号 : WJ-ND400 / 和 WJ-HD616K / WJ-716K / WJ-ND400 WJ-HD616K WJ-HD716K 4TB 红 40PURX-64GVNY0 AF OK 4TB 红 40EFRX-68WT0N0 AF OK 纠正点 1 2014 年 87 月 259 日 K-HW508K / HW516K

More information

.... 1....2..3....4...6...7...8..10. 11...14..15...16..17.19

.... 1....2..3....4...6...7...8..10. 11...14..15...16..17.19 V1.0 2003/08/24 1 .... 1....2..3....4...6...7...8..10. 11...14..15...16..17.19 - 4 4 3 3 3 1 ( ) 3 ( ) 4 4 3 4 7/28~7/31 7/287/297/30 7/314 7/28 7/31 18:00 Web 18:00 2 2 1. ( ) 3/20~3/24 2 ( ) 92 3 92

More information

未命名-1

未命名-1 1 2 3 4 5 6 7 8 9 10 11 12 ss a c y e vg 13 14 15 16 17 18 19 H 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 发现生命的螺旋 克里克在提出 中心法则 时曾指出 遗传信息是沿 D N A - R N A - 蛋白质的方向流动的 遗传信息不可能从 R N A 回到 D N

More information

器之 间 向一致时为正 相反时则为负 ③大量电荷的定向移动形成电 流 单个电荷的定向移动同样形成电流 3 电势与电势差 1 陈述概念 电场中某点处 电荷的电势能 E p 与电荷量 q Ep 的比值叫做该点处的电势 表达式为 V 电场中两点之间的 q 电势之差叫做电势差 表达式为 UAB V A VB 2 理解概念 电势差是电场中任意两点之间的电势之差 与参考点的选择无关 电势是反映电场能的性质的物理量

More information

Parallel Computing WHY Linux 的安装系统管理 linux 的基本命令与概念 Linux 操作系统与程序开发环境 Linux 操作系统与程序开发环境 卢脁 Parallel Computing Linux 操作系统与程序开发环境 卢脁 Linux Operating Sys

Parallel Computing WHY Linux 的安装系统管理 linux 的基本命令与概念 Linux 操作系统与程序开发环境 Linux 操作系统与程序开发环境 卢脁 Parallel Computing Linux 操作系统与程序开发环境 卢脁 Linux Operating Sys Linux Operating System and Programming Environment 1 Department of Science and Engineering School of Mathematics School Peking University 2 3 August 14, 2007 4 当前流行的并行计算主要由结点上安装 Linux 操作系统的 PC cluster

More information