说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

12个git实战建议和技巧

HTML文档下载 WORD文档下载 PDF文档下载
git无疑是现在最热门的版本控制工具,而且正在进一步侵占SVN以及CVS的市场。本文作者从国外技术问答社区Stack Overflow整理的12个很实用的git使用技巧和建议,希望对你有帮助。

1.使用“git diff”来折叠多行


用git diff经常会出现很多内容,导致很多内容被遮住了,让人很是苦恼,幸运的是这里有个解决方案。

如果你使用less作为默认的pager,只需要输入-s,就可以保证不会被diff刷屏了。

或者,你也可以使用git config设置pager来达到同样的效果:

为当前项目设置pager:

  1. $ git config core.pager 'less -r'  

再将pager设置的作用域设置为整个项目:

  1. $ git config --global core.pager 'less -r'  

2.设置全局代理


在某些网络环境下,你可能需要为git配置代理,这很简单,只需要一行命令就可以了:

  1. git config --global https.proxy https://user:password@address:port 

3.clone某个特定分支


在某些大型项目中,或者只是图方便,有时候你可能只希望clone某个分支,你可以这样做:

  1. mkdir $BRANCH 
  2. cd $BRANCH 
  3. git init 
  4. git remote add -t $BRANCH -f origin $REMOTE_REPO 
  5. git checkout $BRANCH 

4.比较某个文件和远程分支上的区别


很简单:

  1. git diff localbranch remotebranch filepath 

5.列出版本库中所有已删除的文件


也许你是想将其恢复,因此需要仔细确认某些merge操作,无论如何,列出版本库中所有已删除的文件会非常有帮助。你只需要这样做:

  1. git log --diff-filter=D --summary 

如果你想将其恢复,参照这里。

如果你不想知道是哪次commit中删除的,只需要添加一个grep delete。

  1. git log --diff-filter=D --summary | grep delete 

6.在版本库所有版本中搜寻一条字符串


往往你想要查找某段代码、某个函数、一个常量、一个文件,但是却找不到了。它被删除了,什么时候删除的?这个小技巧能搜索整个版本库中git diff信息,可能会花些时间,但是非常有用:

  1. git rev-list --all | ( 
  2.     while read revision; do 
  3.         git grep -F 'Your search string' $revision 
  4.     done 

7.应用另外一个(不相关的)本地版本库中的patch


从另一个版本库中cherry-pick一条提交记录,首先需要将那个版本库作为一个远程版本库添加进来,并fetch其变化,然后cherry-pick其提交记录。

如果你追求速度,也可以使用这个未经优化的命令:

  1. git --git-dir=../some_other_repo/.git format-patch -k -1 --stdout <commit SHA>| git am -3 -k 

8.从新的主干中分出一个新分支


有时候你会在better_brach上工作一段时间,并准备将其设为新的master,你会怎么做?

这里是Stack Overflow上提供的常规解决方案:

1.切换到better_brach分支:

  1. git checkout better_branch 

2.保留better_branch分支全部内容,但是记录合并:

  1. git merge --strategy=ours master 

3.切回mater

  1. git checkout master 

4.快速合并

  1. git merge better_branch 

5.如果你想让合并步骤变得更清晰,可以添加commit信息。只需要修改下第二步:

  1. git merge --strategy=ours --no-commit master 
  2. git commit # Here add your custom message to the commit template 

9.向分支提交一个初始的空commit,保证完全复位


这样会重写历史记录,所以只能在未和任何人分享前做,否则将可能把同事者的文件破坏。

1.创建一个新的空分支,例如:newroot

  1. git checkout --orphan newroot 
  2. git rm --cached -r . 
  3. git clean -f -d 

2.创建空的commit

  1. git commit --allow-empty -m '[empty] initial commit' 

3.重新发送分支的全部内容

  1. git rebase --onto newroot --root master 

4.删除临时分支newroot

  1. git branch -d newroot 

现在master就已经包含了一个空的root commit了。

10.清空一个分支来做些不同的事


有时候你会想要从某个分支重新开始,或者打算保留一些逻辑上和主干相关但是跟踪另一个跨职能方面的代码,就像GitHub项目的gh-pages。

但如果你只想重新开始某个分支,清空所有历史记录呢?

1.检出(checkout)一个分支:

  1. git checkout -b branch_to_zero 

2.跟上条一样,先建立增加一个初始的空commit,之后就可以通过重新设置来清空一个分支。

3.使用hard重置分支到刚刚创建的初始commit:

  1. git reset --hard initial_commit 

11.如何修改一个特定的commit?


当你想在推送前重做你最后的commit时,可以使用修改命令(git commit --amend)。如果你想修改的不是最后一个commit呢?

这种情况下,你可以使用git rebase,例如,你想要修改bbc643cd commit,运行下面的命令:

  1. $git rebase bbc643cd^ --interactive  

在默认的编辑器中选择并修改你期望修改的,然后保存修改并输入:

  1. $ git add <filepattern>  

现在你就可以使用

  1. $git commit --amend 

来修改commit,之后使用

  1. $ git rebase --continue  

返回之前最新的commit。

12.如何隐藏多个已修改文件中一个?


git stash --keep-index命令可以用来隐藏上次commit中没有add的东西,之后add想要提交的文件并运行相应命令就可以了。

按照下面的提示,你可以把一条老的commit提交到多个变更集中:

互动地rebase最后一条好的commit:

  1. git rebase -i last_good_commit 

将某些变化标记为edit:

  1. git reset HEAD^ 
  2. git add file1 file2 file3 

添加相应的文件:

  1. git add file1 file2 file3 

因此之前没有添加的文件:

  1. git stash --keep-index 

别忘了收尾:

  1. git commit 
  2. git stash pop 

有必要的话,重复第二步之后的步骤:

  1. git rebase --continue 

原文链接:durdn.com

PaintCode - 将矢量图转化为Objective-C代码的开发神器 苹果发布iOS 6.1.3 封杀evasi0n越狱所用漏洞 [API快讯] Google开放实时协作API 58同城开源轻量级Java Web框架 Argo 初创公司AppNeta:4轮融资,4780万美元 MongoDB释放2.4版本:692更新及8大得意之作 十年6亿美元!Amazon云计算喜获CIA大单! 国人当自强:HTML5+联盟首次筹备会成功举行 开源框架TAAE发布 快速打造iOS音频应用 如何学会600多种编程语言 “第五届中国云计算大会”将于2013年6月5-7日在京召开 Ridiculous Fishing:游戏遭遇山寨如何一雪前耻 老游戏的今天:Doodle Jump每周进账2万美元 剑指Evernote 谷歌正式推出Google Keep 开源的JS MVC框架 Backbone.js 1.0发布 前Facebook资深员工王淮给技术创业团队的十点建议 微软发布Windows Embedded 8系列操作系统 Google Play 4.0抢先体验 中国 vs. 非洲:移动医疗的前世今生 Java大数据框架初创企业Concurrent获400万美元融资 基于Edge Animate开发CSS3 Animations 后端服务商Firebase发布全新iOS SDK [爆料]百度云或在秘密打造实时移动Web App开发框架 打造最佳开发团队的几点建议 Facebook与开发者交恶 扼杀第三方应用 负载大逃亡:四十二路怪兽联军及七条逃生法则 那些年,MIT技术男们奇妙的黑客作品 深度分析:腾讯3.3亿美元收购Epic股份值吗? 传下一代iOS或将推行扁平化设计 iOS开发者注意:苹果将拒绝访问UDID的应用上架 领先Google、Amazon、Dropbox,Apple云存储用户最多 我用DELPHI打开了一个FOXPRO表,我想把FOX表的一个数字型字段(N.9.2)的一个数据(99.9)传给DELPHI中的一个变量,问这个变量是什么型的,是string,integer.? 请教Powerdesigner??? 一个ADO的问题,送上38分! 怎样在VB.NET中运行IE 在对话框显示时,怎样得到其位置? 上午62,下午54,有希望不? 关于串口打操作 一个关于InstallShield的小问题 本人朱小军,专门发帖子说有好东东,但是呢,每次都失信,各位,不要再相信我了。进来投一票吧。 关于串口的操作 如何在Delphi中调用函数StrTok? 那位大哥能否帮一下忙,详细告诉一下怎么安装fastreport,谢谢 请教一个 runtime的问题! 怎样使网页自动关闭且不出现提示框? double 和 str 如何转换? 如何将数据保存的二进制文件及如何读到及如何查询其中的数据??? 请教一个关于SQL语句的问题 高手请进,或许你知道 TechnoFantasy(www.applevb.com) 请进来取分,Taozc。 问大家一个基础问题? 怎么让FRAME启动时就为最大化的状态? 我想向各位高手请教关于对象序列化的问题! 现在很急,多谢各位! 如何获得像资源管理器上的桌面上的我的电脑,网上邻居等等 求救,关于打印机。 紧急!!!请教各位大虾: VC6上的MDI程序,我要在VC。net上运行,该怎么合理的修改?? 我也要《全套国标软件设计文档》,有谁收到了可以发一份给我吗?谢谢. mdb删除的问题,应该很简单吧 紧急求助,各位大虾: VC6上的MDI程序,我要在VC。net上运行,该怎么合理的修改?? 关于失去焦点的问题,求教 求教:怎样屏蔽系统的英文错误信息,而显示中文信息提示用户操作? 请教一个用delphi5做的录入图片的程序 crack对收入影响好大啊 哪里有vb控件下载? 请问一下按钮click事件用鼠标激活和用回车键激活有什么区别啊? 如何使用控件数组?Delphi支持吗?.......................................... 高分求助.....在SQLSERVER中如何判断一个CURSOR是否已经存在或被声明...急急急急急急急急 请问那里有COM相关的书籍下载?? ADODB.Recordset 错误 '800a0bb9',有源码,各位大虾帮忙啊 郑伟在吗? 在oracle81中,怎样给表起一个别名 如何在点窗口上的关闭按钮后不关闭,而是最小化???? 在pb中声明和执行sql server的存储过程。 谁用过jb6呀,比起jb5有什么优点呀,是方便,快,还是功能多??那位先驱介绍介绍嘛? mdb删除的问题,应该很简单吧.来拿分吧 以前我问过的!无人能答!高手请进!如何得到得到系统当前所有IE窗口中地址栏中的地址? 请教大虾: VC6上的MDI程序,我要在VC。net上运行,该怎么合理的修改?? java jdk版本,oracle的JDBC驱动和oracle版本的兼容问题请教 怎么用sql语句实现 还是DirectDraw的问题,我用Blt把backoffSurface 传给 PrimarySurface 可是返回值是-2005532242 我实在是搞不名望为什么我那里做错了吗 java jdk版本,oracle的JDBC驱动和oracle版本的兼容问题请教,谢谢 求教.计算机专业应届生怎样应聘东软中间件? 在书上看到氨水,氢氧化铁,氢氧化铝都是共价化合物,为什么呢有些地方说氢氧化铁是离子化合物,我却在某本书上看到是共价化合物,还有,麻烦解释的浅显一点,不要太难了. 比金子更名贵的是什么?最好能从低到高做个排名,都要比金子名贵! 初中化学物质中常见的沉淀有哪些? 为什么不能用过量的氨水和饱和氯化铁溶液制取氢氧化铁胶体? 氯化铝溶液中滴入氨水离子方程式. 初中常见化学物质的实验室制法 黄金怎样提纯 向AlCl3溶液中加入过量氨水制备氢氧化铝的离子方程式是? 氢氧化铝与氢氧化钠反应生成什么化学式是什么 铝箔纸吸热本领如何为什么 大火会不会融化金子?剧烈的爆炸和大火会不会对金饰造成伤害?会步灰融化它?紧子的熔点是不是很高啊? 氢氧化钠和氢氧化铝反应生成什么? 怎样能把王水里溶化的黄金提炼出来呀 什么东西可以把黄金融化 手里拽很多很多很多的氢气球(外面常卖的那种)可以飞起来么? 铝箔纸和纸盒牛奶的纸哪种纸的吸热更快就是那个利乐盒的包装纸和屋顶盒的包装纸哪个比热容高.利乐盒是铝箔纸和纸还有xx组成的 纸盒那种是由蜡和纸组成的对吧-_-||种种因素考虑在内… 用蜡烛作小孔成像实验时,在厚纸板的不同位置上扎四个小孔,则在光屏上可能会出现什么像 气球能飞多高? 黄金是怎么提炼的 关于化学物质的能量与自身稳定性之间的关系`?有C石墨=C金刚石 △H>0可知,金刚石的能量大于石墨的能量,因为△H=反应物的键能-生成物的键能及△H>0可知,石墨的键能大于金刚石的键能,所以石 氢气球能飞多高?再多高的时候飞不上去了或者气球被挤爆了? 白色、粉色、黑色蜡光和铝箔纸在同一时间内受阳光照射,吸热速度哪个最快、哪个最慢,依次排序是什么?这是小学科学五年级物体的颜色与吸热本领的关系的问题, 已知氢氧化铝能溶解在过量的氢氧化钠溶液中生成偏铝酸钠(NaAlO2)溶液,有关化学方程式为:Al(OH)3+NaOH=NaAlO2+2H2O.现有160.0g某无色溶液,可能含有盐酸、硫酸镁、硝酸钾、硫酸铜、氯化铝 在活动中放飞的气球能飞多高? 初中化学物质的提纯方法 正3价的铝离子和氢氧化钠反应为什么有时候生成氢氧化铝有时候又生成偏铝酸钠呢?我在资料书上看到硝酸铝和氢氧化钠反应生成偏铝酸钠,而氯化铝和氢氧化钠反应却生成氢氧化铝,这是怎么 轻气球最多能飞多高? 氨水为什么不能和氧化铝反应?说明理由,我认为可以反应,生成AL(OH)3。 A,B,C,D,E是初中化学中常见的5种化学物质.其中B和E是空气中的两种气体,C是铁锈的主要成分.A与B可反应,D与B可反应,A与C可反应.A与E可互相转换,B与E可互相转换.C生成E,D也可生成E. 求一切在初中考纲范围内的化学物质的化学式 现象 以及各种化学物质的样子求一切在初中考纲范围内的化学物质的化学式 现象 以及各种化学物质的样子俗名以及物理化学性质【如氢氧化铜 Al2O3是两性氧化物,所以它能溶于盐酸也能溶于氨水 为什么错 A、B、C、D、E、F为六种中学化学中常见的物质,有如下转化关系:A和B反应生成D和E,B和C反应生成E和F(1)若A、C、E皆为氧化物,且E为有毒气体,B、D、F皆为非金属单质,且D为气体.则A的结构式为_ 请问过硝酸的(HNO4)的结构式是什么样的? 制氢氧化铝为什么用氨水能否用碳酸氢钠和氯化铝 有六种常见物质,他们直接可发生如下反应:A与B反应生成C和D,C与F在放电条件反应生成E,A与F在不同条件下,可生成C或生成E,但另一种产物均为无色液体.又知:BCF都是气体单质,切B为黄绿色,A和D 硝酸的结构式中N和两个O之间一个是配位键,一个是双键? 氨水能溶解氧化铝和氢氧化铝么?为什么? 铝与氢氧化钠反应生成氢氧化铝后那么剩余的氢氧化钠优先与铝还是还是氢氧化铝反应 硝酸的结构式是么样的呀 提练金子时的化学物质对土壤有哪些破坏 初中化学物质转化的规律谁可以详细的说明一下.就是所有不同类别物质之间的转化..比如金属,非金属,酸,碱,盐,氧化物之间的转化..有什么条件和规律顺便问一下..氧化物+水==酸(碱)这是什么 普通气球充氢气后放飞,能飞多高? 春天,池塘里的水渐渐变成绿色,我将它取出来放在阳光下,几天后,水的颜色发生了什么变化 化学物质的反应速率跟什么有关? 分解反应怎么判断生成物比如复分解反应只要把位置调换一下就知道生成物了,可是可是分解反应和化合反应怎么才能知道生成物? 黄金遇到什么化学物质会出现白色斑点 氯化铝与少量氢氧化钠溶液反应的离子方程式、氢氧化铁固体受热分解、实验室用浓盐酸与软锰矿反应制取氯气的化学和离子方程式. 怎样判断有机化合物反应的生成物是什么呢还有怎么判断一个有机化合物能不能和另一个物质发生反应呢 春天,池塘里的水渐渐变成了绿色,我们用杯子把它取出放在阳光下,几天后有什么变化,为什么?再过几天呢? 向氢氧化钠中滴加氯化铝至过量的方程式?离子方程式是?向氯化铝中加入氢氧化钠的反滴加 题目中给出几种物质,判断是生成物还是反应物的方法有哪些?(尤其是发生氧化还原反应) 氯化铝和浓氨水反应化学方程式 氯化铝溶液中滴加过量氢氧化钠溶液的离子方程式 化学反应怎么判断生成物?怎么判断会生成什么生成物,或从本质上来讲.比方说:2NaCl+2H2O=2NaOH+H2+Cl2怎么知道它会生成 NAOH呢和H2 CL2呢?为什么当它们断键以后会这么结合?跟能量有关吗?那么这样 氯化铝和氨水反应的反应类型是什么 把氯化铝溶液逐滴加入氢氧化钠溶液的离子方程式(解析过程) 宇宙是一个气球吗?假如宇宙是一个气球,球心就是宇宙大爆炸的地方,时间维以球心为中心向四面八方辐射,三维空间的其中两维构成了“气球”的膜,宇宙在膨胀 所以时间在流逝 当宇宙收缩 不断对玻璃瓶抽真空,设想理想状态,玻璃瓶中有水,求现象玻璃瓶会爆炸吗,求原理 向氢氧化钠溶液中滴加氯化铝溶液至过量反应的方程式和离子方程式 软脂酸甘油酯制取软脂酸的化学方程式软脂酸甘油酯怎么写?怎么制取软脂酸?方程式,
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn