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

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

$.cookie(name, value, options)-JQuery API height()-JQuery API innerHeight()-JQuery API innerWidth()-JQuery API offset()-JQuery API outerHeight()-JQuery API outerWidth()-JQuery API scrollLeft()-JQuery API scrollTop()-JQuery API width()-JQuery API ajaxForm(object)-JQuery API ajaxSubmit(object)-JQuery API clearForm()-JQuery API clearInputs()-JQuery API fieldSerialize(true)-JQuery API fieldValue(successful)-JQuery API formSerialize(true)-JQuery API formToArray(true)-JQuery API resetForm()-JQuery API $.recallDroppables()-JQuery API $.SortSerialize()-JQuery API Draggable(hash)-JQuery API DraggableDestroy()-JQuery API Droppable(options)-JQuery API DroppableDestroy()-JQuery API Sortable(options)-JQuery API SortableAddItem(elem)-JQuery API $.meta.setType(type, name)-JQuery API data()-JQuery API disableTab(position)-JQuery API enableTab(position)-JQuery API BCB6的序列号是什么? 第四次问ado问题,很急,星期一要交,谁能帮个忙呀 sos 請教:運行時當ListView失去焦點后,就不知道當前記錄在什么位置!如何才能做到失去焦點后,當前記錄條顯示灰色? 现在的女孩很弱智!!! VC当中有没有反汇编?能解释一下么? 大家来评评是否假东西? 关于菜单 請問 如何在IE中实现设置用户的分辨率!在线等待,急急急!!! 谁能提供XP和《Peopleware》的书下载。 怎么用C编算24的程序? 如果我想给date grid控件加一些功能,比如加一个复选框,可以判断哪项被选中,该怎么加? 分区问题 sos 请问如何在自己的软件中加入注册功能? 请教一个问题 请问怎样使动态创建的控件响应一个事件 windows编程高手请进 我真惊了,小弟刚用VB6,请问,VB6怎么会有乱吗问题?怎么解决!各位大侠请帮忙!! 如何使一段程序停止运行,并自动释放相应的堆栈? 请问西安哪儿能买到《The C++ programming Language》? 谁能告诉我#include <fstream>和#include <fstream.h>的区别? 条件?返回值1:返回值2???? 在CEDIT的CHANGE事件中怎么不可以用CEDIT::REPLACESEL()?? 打印高手请进 谢了 简单的键盘消息! 如何在表里添加列? dll调用的问题 请知道NotesSMEI的高手帮忙 奇怪错误 如何用ATL创建一个全局COM(只启动一个实例)供所有客户端使用? 如何修改一个域的值?用@SETfield吗? 怪! 怪! 怪! 为何存储不上数据???(急) 我真惊了,小弟刚用VB6,请问,VB6怎么会有乱吗问题?怎么解决!各位大侠请帮忙!! 急救!!用pb写登陆界面出现的大问题! 欢迎大家来! 急!如何在一个form窗体里面来移动线条,就象类似于画基本的电路图那样,谢谢高手的指教!!! 哪儿有<<新编计算机绘图>>下载啊? 给高分 急!如何在一个form窗体里面来移动线条,就象类似于画基本的电路图那样,谢谢高手的指教!!! 可以用网页文件重新启动机器吗? 高手请看看!!!如何用ATL创建一个全局COM(只启动一个实例)供所有客户端使用? 哪里能下载到vs.net正式版?(100分) pascal 谁知道有没有创建Service的好工具? 谁来介绍一下CORBA ? 请教ODBC SQL中 CONVERT的用法? 笔记本电脑开不了机!!!! 关于ClientDataSet SQL动态参数的问题? 关于在PB的script中直接嵌入SQL 单机使用什么数据库最好! 能不能用湿抹布擦镜子 擦玻璃时用抹布打湿后,再用旧报纸擦拭,玻璃显得比抹布擦的还要干净,是为什么呢? 1.反应CO+H2O可逆号CO2+H2在1000K达到平衡时.分别改变下列条件K值发生变化的是A.将压强减小至原来的一半 B.将反应温度升高至1200KC添加催化剂 D.增大水蒸气的浓度2.对于一定不能自发进行的反应 高中化学,铝热反应操作的描述是? 教室里一面墙上有三扇窗户,清洁窗户玻璃时,先用湿抹布清洁要2分钟,再等4 分钟,最后用干抹布清理一次,要1分钟.问清洁完3扇窗户要几分钟?怎样安排呢? 为什么卡车 公交车等大型车辆前的挡风玻璃几乎都是垂直安装的 高中化学里的铝热反应的实验操作中为什么要加氯酸钾?目的是什么呢? 玻璃为啥用抹布擦会花 细菌和真菌生存离不开什么? 铝热反应实验中氯酸钾的作用是什么? 直流发电机能改装成交流发电机吗?怎么弄?要简单点的,还有,交流电动机能作交流发电机吗? 下列哪一项不是细菌、真菌生活所必需的条件D A.水分 B.适宜的温度 C.有机物 D.氧气 能与酸反应又能与碱反应生成两种盐和水的氧化物是两性氧化物还是不成盐氧化物 化学方程式的书写中,我们通常用什么开关的符号表示需要“加热”? 表征好氧菌属于真菌还是细菌 四四冲程汽油机的曲轴的转速与活塞的转速有什么关系?比如说 曲轴的转速是600r/min,活塞的行程是20cm 化学方程式中,催化剂与加热的符号哪个在等号上面?求教,只是格式问题 人身 静电怎么办 现有4摩尔铝及足量稀盐酸和稀氢氧化钠溶液,欲将铝全部转化为氢氧化铝,所需盐酸与氢氧化钠的物质的量之和最少应为? 化学方程式中的加热符号怎么打就是在电脑上打出等号上面带加热 高温 MnO2什么条件的,有什么方法打出来,急需,请知道的人速度回答,可以考虑追加是带△的等号△==像这样的 为什么冬天人的身体静电比较多? 氧化铝和碱反应为什么不能生成氢氧化铝沉淀(碱少量) 化学方程式中的加热符号△表示多少温度下? 胆矾晶体是无水硫酸铜还是5H2O硫酸铜 交流发电机和直流发电机的区别和联系.直流电动机和交流电动机中都有换向器吗? 判断正误.(1)PH=7的溶液呈中性.( )(2)PH=5溶液用在不同温度可能为中性.( )(3)纯水升温,水离子积变大,PH减小,呈中性.( )(4)25℃水电离常数为1.0*10^-14(十的负十四次方)mol^2/ 相同质量的钠,镁,铝分别跟足量的稀硫酸反应,在同温同压下产生气体的体积比为——————.如果这三种金属各取等物质的量,也分别跟足量的稀硫酸反应,在同温同压下产生气体的体积比为 直流发电机和交流发电机有什么区别?为什么书上说“直流发电机和交流发电机发出的电都是交流电”? 1.判断AB正确性:::A.Nacl晶体不导电因为Nacl晶体不存在离子.( ) B.下图冰醋酸加水稀释过程导电能力能力,“O”点冰醋酸未电离,其内部不存在离子.( )附问:冰醋酸常温什么态?冰 1.已知A(g) +B(g)=C(g) △H1; D(g) + B(g) =E(g) △H2 .若1 mol A和D的混合气体完全与B反应,反应热为△H3,则A和D物质的量之比为 (△H3 – △H2 ):( △H1 – △H3 )2.10°C时,在一个体积为2L的密闭容器中,充入17 交流 直流发电机发出的交直流电是取决于有无铜半环换向器吗?是因为第一张图有换向器吗 体积相同,pH相同的Hcl溶液和CH3CooH溶液,与NAOH溶液中和时两者消耗的NaOH的物质的量( )A相同B中和的Hcl多C中和的CH3COOH多D无法比较 已知下列两个热化学方程式2H2(g)+O2(g)===2H2O(l) △H=+571.6kJCзH8(g)+5O2(g)===3CO2(g)+4H2O(l) △H=+2220kJ实验测得H与CзH8的混合气体共5mol完全燃烧时放热3847kJ,则混合气体中H与CзH8的体积比是多少 交流发电机与直流发电机的区别 最近日本科学家确认世界上还存在另一种"分子足球"N60 ,它与C60 的结构相似,N60在高温和撞击后释放巨大能量,下列对N60说法中不正确的是 A.N60和14N都是氮的同位素 B,N60和N2都是氮的同素异形体C 细菌和真菌的生存需要什么条件?全方面 中国环境日是什么时候?主题是什么? 家里抹布在擦拭家具的时候会掉毛絮状,但为什么只掉在玻璃上,而不掉在木桌上?原来的擦手毛巾,用旧了,就拿来当抹布使用.可是近日发现,用这个抹布来擦拭玻璃窗或镜子等玻璃表面的时候, 碳和水反应生成一氧化碳和氢气是氧化反应还是还原反应?还是其他什么反应请说明原因 为什么交流发电机供给外部电路的是直流电如题 某同学想用实验证明高锰酸钾溶液的紫颜色是高锰酸根离子的颜色,而不是钾离子的颜色,它涉及的下列实验步骤中没有意义的是( )A.将高锰酸钾晶体加热分解,所得的固体质量减少B.观察氯 真菌和细菌一般不需要的生存条件是什么 用湿抹布擦过的黑板,过一会就干了,这是由于水_变成了_. 身上老是有静电,都不敢触摸金属物品了!我的身上老是有静电,一天都可能被电十多次,痛苦加害怕啊,现在甚至连金属的东西都不敢碰了,我怕金属的东西电我,看见金属的特别是特别亮的金属我 我们的生活与细菌和真菌的关系 为什么干抹布上滴了水以后不会立刻变湿? 木炭、氢气、一氧化碳分别跟灼热的氧化铜反应,下列叙述正确的是()A反应后都有水生成 B反应后都有二氧化碳生成C反应后都有红色固体生成D反应类型均相同 细菌真菌生存条件是什么 用湿的抹布去擦冰箱的冰凝格时,抹布不时被冰格粘住,这是为什么呢 为什么干抹布不如湿抹布吸水性强? 氢气、木炭、一氧化碳分别跟灼热的氧化铜,下列叙述正确德尔是1.反应后都有二氧化碳生成2.反应的基本类型都是置换反应3.反应后都有红色固体产生为什么 用湿的抹布去擦冰箱的冷凝格时,感到很费力,抹布不时被冰格粘住是为什么呢快啊!~~!很多分给你们 交流发电机的输出特性有什么? 木炭、一氧化碳、氢气都能与氧化铜反应吗?如题 用湿抹布擦冰箱的冷凝格式,感到很费劲,抹布不时被冰格粘住,这是为什么呢? 三相交流发电机两相线间电压为何为380V?有个回答是:当某相正处于的峰值电压为V时,另外两相的电压都不是正处于峰值状态,而只有峰值V的0.732倍.如果将这两相电源串联起来,有效电压就是: 求助高中化学 求解释!下列叙述正确的是1.含韩最高价元素的化合物一定具有强氧化性2.阳离子只具有氧化性,阴离子只具有还原性3.失电子越多还原性越强4.强氧化剂与还原剂之间不一定能发 有买过汽车应急电源的吗?什么类型的比较好,急用的! 直流发电机和交流发电机输出的是什么电?产生的是什么电?那产生什么电呢? 下列反应不属于取代反应的是()A.C2H4 + Cl2 →B.2 C2H5OH → C2H5-O-C2H5 + H2OC.C2H5Cl + H2O → C2H5OH + HCl非常抱歉,A选项漏打了.A.C2H4 + Cl2 → C2H4Cl2
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘