第 7 节 Git大师技.pdf

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第 7 章 Git⼤师技 到现在,你应该有能⼒查阅 git help 页,并理解⼏乎所有东西。然⽽,查明解决特 定 问题需 的确切命令可能是乏味的。或许我可以省你点功夫:以下是我过去曾经需 的⼀些⾷谱。 源码发布 提交变更 我的提交太⼤了 ! 索引:Git的中转区域 别丢了你的HEAD HEAD捕猎 基于Git构建 ⼤胆的特技 阻⽌坏提交 源码发布 就我的项⽬⽽⾔,Git完全跟踪了我想打包并发布给⽤户的⽂件。创建⼀个源码包,我 运 ⾏: $ git archive --format=tar --prefix=proj-1.2.3/ HEAD 提交变更 对特定项⽬⽽⾔,告诉Git你增加,删除和重命名了⼀些⽂件很⿇烦。⽽键⼊如下命令 会容易的多: $ git add . $ git add -u Git将查找当前⽬录的⽂件并⾃⼰算出具体的情况。除了⽤第⼆个add命令,如果你也 打 算这时提交,可以运⾏git commit -a。关于如何指定应被忽略的⽂件,参 见 git help ignore 。 你也可以⽤⼀⾏命令完成以上任务: $ git l -file -d -m -o -z | xarg -0 git update-index --add --rem 这⾥ -z 和 -0 选项可以消除包含特殊字符的⽂件名引起的不良副作⽤。注意这个 命令 也添加应被忽略的⽂件,这时你可能需 加上 -x 或 -X 选项。 我的提交太⼤了! 是不是忽视提交太久了?痴迷地编码,直到现在才想起有源码控制⼯具这回事?提交 ⼀ 系列不相关的变更,因为那是你的风格? 别担⼼,运⾏: $ git add -p 为你做的每次修改,Git将展⽰给你变动的代码,并询问该变动是否应是下⼀次提交的 ⼀ 部分。回答“y”或者“n” 。也有其他选项,⽐如延迟决定;键⼊“ ?”来学习更多。 ⼀旦你满意,键⼊ $ git commit 来精确地提交你所选择的变更 (阶段变更)。确信你没加上 -a 选项,否则Git将提交 所有修改。 如果你修改了许多地⽅的许多⽂件怎么办?⼀个⼀个地查看变更令⼈沮丧,⼼态⿇ ⽊。 这种情况下,使⽤ git add -i , 它的界⾯不是很直观,但更灵活。敲⼏个键,你 可 以⼀次决定阶段或⾮阶段性提交⼏个⽂件,或查看并只选择特定⽂件的变更。作为 另⼀ 种选择,你还可以运⾏ git commit --interactive ,这个命令会在你操作完后⾃动 进⾏提交。 索引:Git 的中转区域 当⽬前为⽌,我们已经忽略Git著名的索引‘概念,但现在我们必须⾯对它,以解释上 ⾯发⽣的。索引是⼀个临时中转区。Git很少在你的项⽬和它的历史之间直接倒腾数 据。 通常,Git先写数据到索引,然后拷贝索引中的数据到最终⽬的地。 例如, commit -a 实际上是⼀个两步过程。第⼀步把每个追踪⽂件当前状态的快照放 到索引中。第⼆步永久记录索引中的快照。 没有 -a 的提交只执⾏第⼆步,并且只在 运⾏不知何故改变索引的命令才有意义,⽐如 git add 。 通常我们可以忽略索引并假装从历史中直接读并直接写。在这个情况下,我们希望更 好 地控制,因此我们操作索引。我们放我们变更的⼀些的快照到索引中,⽽不是所有 的, 然后永久地记录这个⼩⼼操纵的快照。 别丢了你的HEAD HEAD好似⼀个游标,通常指向最新提交,随最新提交向前移动。⼀些Git命令让你来 移动 它。 例如: $ git re et HEAD~3 将⽴即向回移动HEAD三个提交。这样所有Git命令都表现得好似你没有做那最后三个 提交, 然⽽你的⽂件保持在现在的状态。具体应⽤参见帮助页。 但如何回到将来呢?过去的提交对将来⼀⽆所知。 如果你有原先Head的SHA 1值,那么: $ git re et 1b6d 但假设你从来没有记下呢?别担⼼,像这些命令,Git保存原先的Head为⼀个叫 ORIG_HEAD的标记,你可以安全体⾯的返回: $ git re et ORIG_HEAD HEAD捕猎 或许ORIG_HEAD不够。或许你刚认识到你犯了个历史性的错误,你需 回到⼀个早 已忘记 分⽀上⼀个远古的提交。 默认,Git保存⼀个提交⾄少两星期,即使你命令Git摧毁该提交所在的分⽀。难点是 找 到相应的哈希值。你可以查看在.git/objects⾥所有的哈希值并尝试找到你期望的。 但 有

文档评论(0)

xuefei111 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档