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

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

详解下一代开源混合应用框架Reapp 应用内一键交易!Google公布Android Pay项目 Timehop为什么要放弃Rails,转向Go? 无线充电技术走入客厅 宜家推出“Home Smart”系列 发布仅一年,虚幻引擎4宣布完全免费! HTML5初学者福利!11个在线学习网站推荐 Qualcomm发布Snapdragon 820与超声波指纹识别技术 App Store应用僵尸化:没品质没资本的必然走向 Unity 5正式发布:支持21种平台、个人版免费! 创新高性能移动UI框架——Canvas UI 框架 取精华、去糟粕!适合iOS开发者的15大网站推荐 Swift如何优化性能? 【程序员电子刊精选】明道CEO任向晖:企业也需要养成好习惯 你信吗?重构软件并不会改善代码质量 融合VR与AR:uSens推出虚拟现实手机头盔 4月17-18日,OpenStack、Spark、Container齐聚OpenCloud 2015 第四代CSS选择器,那些让你激动的新特性 联通WO+开放平台“App计费 ” 保障手机应用付费安全 Valve推Lighthouse技术,欲解决VR设备眩晕感 全球移动开发者报告:Swift崛起,物联网大火! 不圈地自萌!10个UX设计经验分享网站推荐 苹果继续改改改!Swift语言何时能稳定? 封闭还是开放?Android Wear离iOS究竟有多远 TIOBE 2015年3月编程语言排行榜:CoffeeScript首次进入TOP 100 2015网页摄影图的六大流行趋势 原生体验挡不住!JavaScript开源跨平台框架NativeScript 自行车,恰到好处的“智能” 联通WO+开放平台:保护消费者权益就是保护移动互联网生态 2015年Google Code Jam编程挑战赛开始报名 Impression Pi:VR头盔的进阶形态 King.com和Halfbrick Studios成功背后的21款工具 高分征解:一个动态提示窗口的问题,给出答案必定给分!!!求救我啊!! 在这里赚分真不容易呀! 怎样检查FORM中CHECKBOX和RADIO的值呢 那里有在asp中操作word对象的详细教程? 请问:如何得到TForm的窗口句柄? authorware中的按钮。 哪里有发送mail成功的php程序!! 关于上传数据的一个特殊问题,有点难 怎么用OLE实现与手机的通讯?? 汉语分词算法 grid显示问题 成为Delphi高手须看哪方面的书籍,请高高手指教? 关于属性页的小问题? 为水园增加点正气: 大家都是斯文人吗,呵呵||||| 诗经国风2001版----之桃夭 高手高手教教我 +++++++++++++一个很奇怪的问题************* 请问:有没有专门介绍C++函数使用的书籍? 提個有點難度的問題.看問題的有獎. 高手请看:这语句错在哪? 哪儿有dos的原代码? 谁能平息这几天水园的争端^^^^^^^^^^一个详和的水园^^^^^^^^^^^我只能拿分支持 为何显示黑乎乎的一片,chick!!!!!!! 原来女人也好色,欢迎MM。 心芯蕊~来拿分~~~~MM要分能不给吗??砸锅卖铁也要给啊!~~~~55555,可怜我的分啊~~~~~~~~~~~ 着急??一小段代码!!谁来看一下?? 男子汉说到做到,我在此特地向一位女士道歉 高分求救!急急! ! ! ! 奇怪,编译DIRECTX例子正常,新建一工程后改写主文件后运行BltFast函数为何这样? 急求高人!不简单:关于common dialogbox控件的问题? 怎样学可视化编程? 用Jmail收信后,为什么WORD之类的附件打开总是乱码?? 请问如何使用BCB中的PageControl创建Wizard? 别人跟的帖子也应该能回复呀! Rational Rose2000 Enterprise Edition的License Key是什么? 哪位好兄弟肯给我一个Jbuilder4的序列号? 就有两个月了,还没怎么看书,不知道能不能过高程!!! -------我和我MM系列(转)几乎是完全版 有MM和没MM的都来看看吧 当然MM也可以看~~ 建议:在此开设一个程序之家聊天室。 请教一个简单问题!! 请问各位:如何显示GIF图像??? 最近水园很没劲,看样子是要离开的时候了,虽然我来的时间不是很长。唉,为什么会这样? 这几天晚上我都会在263战网 谁能 提供超大空间 用于上传PB80光盘 月末,大富翁银行将作月结,如果跟本银行还有业务关系,速来通知 用ado怎么连接excel文件,不用odbc行吗? 软驱自动保存是怎么一回事情 请问各位大虾,在VB中,怎样才能改变PictureBox或Imagebox的形状,让它可以容纳圆形的图片.或者用其它方法实现对不规则图片的操作.比如我编了个网络象棋程序,怎样用一个PictureBox来容纳一个圆形的棋子. 请大家帮忙一下拉。http://www.csdn.net/expert/topic/216/216983.shtm 我真急啊 有知道 MPG4 格式的吗?告诉网址也给分!!! 用SDK调用数据库?? 线程 进程 钩子 各种窗口 COM 都凑凑合合 的学完了,接下来我应该去学什么呀???? _K2Cr2O7+_H2SO4+_FeSO4=>_Fe2(SO4)3+_K2SO4+_Cr2(SO4)3+_H2O HNO3电子式怎么写? 作业本上说KClO3+6HCl=KCl+3Cl2+3H2O的转换是KClO3中的Cl转换到KCl里得到6*e-,然后6HCl中的Cl转换到Cl2中失去6*e-,是错的,那么正确的转换应该是怎样的? C+K2Cr2O7+H2SO4 ------ CO2+Cr2(SO4)3+K2SO4+H2O 配平 硝酸的电子式是啥呀? 在反应KClO3+6HCl=KCl+3Cl2+3H2O得电子和失电子的原子个数比?详解. K2Cr2O7+ H2C2O4+ H2SO4 — K2SO4+ Cr2(SO4)3+ CO2+ H2O HNO3的电子式怎么写? C与CuO反应的化学方程式?急 K2Cr2O7+Na2SO3生成什么 K2CR2O7在反应中得电子怎么算啊详细点 K2Cr2O7+H2C2O7+H2SO4-----K2SO4+Cr2(SO4)3+CO2+H2O求高手配平...小弟拜谢...最好带过程... 铜与硝酸反映,如果有1MOL电子,转移,则被还原的硝酸为多少A,63G B.21G C.0.5MOL D.不确定 K2Cr2O7怎么读?有奖征询,奖积分,走过看过,不要错过望各位大侠,助小女一臂之力,大恩大德,没齿难忘 Cr,K2Cr2O7,Cr2(SO4)3,CrCl2,Cr2O3,ZnCrO4这六种物质中铬元素显化合价的有哪些?请说明理由, 镁和稀硝酸反应时,每有1molHNO3反应,就有0.8mol电子转移,此时硝酸的还原产物可能是 化学问题K2Cr2O7读什么?2和7都是下标 与K2Cr2O7的Cr的化合价相同的氯化物的化学式是什么 如图,已知A、B、C三点不共线,求作一点P,使PA=PB=PC. 高中化学.k2cr2o7怎么念?了 KMnO4求化合价Mn 怎么用excel完成数据的计算机处理文件.要求有数据的点线图及数据拟合(线性或非线性提交一份用excel或origin完成的你在无机分析、物化、有机实验课所得数据的计算机处理文件.要求有数据 化学方程式配平:()K2Cr2O7+()Fe3O4+()H2SO4 与K2CR2O7中的CR的化合价相同的氧化物化学式 KClO3与HCl的反应方程式一共有几个方程式啊?还有KClO3+6HCl=KCl+3Cl2(g)+3H2O这个反应为什么Cl2既是氧化产物又是还原产物啊?用归中反应规律解释一下力求浅显谢谢!(主要是后一问) K2Cr2O7+H2SO4+(NH)2Fe(SO4)2-->请帮忙完成反应方程式并配平 如SO4 CO3 NO3 PO4 CLO3 SO3 这类是否有方法记忆其化合价 背了好久还没背出举个例子就行如SO4如何记忆 kclo3和hcl反应的离子方程式是离子方程式啊,同志们啊不要给我化学方程式 配平K2Cr2O7+KI+H2SO4---K2SO4+I2+Cr2(SO4)3+H2OK2Cr2O7+KI+H2SO4---K2SO4+I2+Cr2(SO4)3+H2O OH,NO3 NH4 SO4 CO3 PO4 MnO4 ClO3 是什麼根?我只知道 MnO4 是锰酸根. KCLO3 和 浓HCL如何反应 配平 k2cr2o7 + ki + h2so4---k2so4+ cr2(so4)3+ i2+ h2o 某透明的溶液,其中只可能含有大量的K+,Cu2+,OH-,SO3 2-,Cl-,CO3 2-,HCO3 -,MnO4 -,SO4 2-①测定溶液的pH,溶液显强碱性;②取少量溶液加入稀盐酸至溶液呈酸性,产生无刺激性、能使澄清石灰水变浑浊的气 KClO3+6HCl=KCl+3Cl2↑+3H2O有0.5mol电子转移,则有几molCl2生成?多少个HCl被氧化?几mol+5价Cl被还原? 要配制浓度为0.02mol/L的K2Cr2O7溶液1L,应准确称取K2Cr2O7基准物多少克?(K=39.1,Cr=52.0,O=16)请写出计算过程. 写出下列元素及原子团的化合价 H,K,NA,Ag,O,Ca,Ba,Mg,Zn,Al,OH,SO4,CO3,NO3,NH4,PO4 kClO3+6HCl===KCl+3Cl2+3H2O 中当转移的电子数目为0.5mol时,生成的cl2的质量为多少? 例:如K2Cr2O7标准溶液浓度为0.02150mol/L,问TFe/K2Cr2O7=?g/mL?TFe/K2Cr2O7=0.007192g/mL谁能告诉我怎么解的么. CO3的化合价是多少能不能把此物质的化学名称也写出来? 已知反应:Kclo3+6HCL=KCL+3CL2+3H2O,求出被氧化和未被氧化的HCL的质量之比.具体过程或者解题思路. 怎样将0.1000的硫代硫酸钠标准溶液稀释成0.01 mol/L这是书上的解释硫代硫酸钠标准滴定液:c(Na2S2O3)=0.01mol/L。移取1000mL刚标定过的硫代硫酸钠标准溶液0.1000mol/L于100mL棕色容量瓶中,用水稀 氯酸钾化学式 已知氧化还原反应:KCLO3+6HCL=KCL+3CL2+3H2O,在反应中得到3molCL2转移的电子为:5mol. 若用a、b、c分别表示有理数a、b、c,0为原点如图所示.已知a 求氯酸钾的化学式 KCLO3和HCl方程如何配平 过程思路///为什么我配盐酸为5帮标一下电子转移方向和数目谢了 K2Cr2O7中的Cr的化合价怎么求? KClO3如何制取O2 已知KClO3+6HCl=3Cl2+KCl+3H2O中KClO3+6HCl=3Cl2+KCl+3H2O中 求出电子如何转移转移的数目方向 求出氧化产物和还原产物的质量之比求出被氧化和未被氧化的盐酸质量之比 重铬酸钾(K2Cr2O7)中铬元素(Cr)的化合价明天就要考试了... 如何做电子密度差分图求答案 KClO3+6HCl=KCl+3Cl2+3H2O中转移电子为何为5e-与计量数是否有关? K2Cr2O7 铬元素的化合价是多少 N2H4电子式为什么是这样~看我画的图我知道上面一个图画掉了2个点~ 为什么N最外层只能有8个电子~ 那PCL5 里面P最外层还不是有10个 KCLO3+6HCL=3CL2+3H2O+KCL怎么用双线桥表示反应物中有两个CL,生成物中也有两个CL,到底是从哪个CL到哪个CL化合价在变化,最好把全部过程写出来, 12个Na2So3恰好与4个K2Cr2O7完全反应,则元素Cr在被还原的产物中的化合价为 (如图)转移电子数问题,C项为什么是转移2mol电子? 【急】KClO3+6HCl=KCl=3Cl2+3H2O氧化还原反应详细分析在这个反应中,转移电子数为5.据说是HCl中的Cl,一个保持-1价不变,其余五个变为0价,KClO3中的Cl变为0价.我一开始是以为KClO3中的Cl变成KCl中的Cl,降 化学方程式配平K2Cr2O7+C+H2SO4→Cr2(SO4)3+K2SO4+CO2+H2OCr从+6→+3,C从0→+4 ,如果按照最小公倍数K2Cr2O7前面是4,C前面是3啊,为什么K2Cr2O7前面是2呢? pcl3的电子式,最好带图 KClO3+6HCl===KCL+3CL2+3H2O中,电子是怎样转移的?双线桥怎样表示?(因为是新人,没什么积分)失电子与得电子(氧化产物,还原产物)都是在氯气上吗?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn