12个git实战建议和技巧
1.使用“git diff”来折叠多行
用git diff经常会出现很多内容,导致很多内容被遮住了,让人很是苦恼,幸运的是这里有个解决方案。
如果你使用less作为默认的pager,只需要输入-s,就可以保证不会被diff刷屏了。
或者,你也可以使用git config设置pager来达到同样的效果:
为当前项目设置pager:
- $ git config core.pager 'less -r'
再将pager设置的作用域设置为整个项目:
- $ git config --global core.pager 'less -r'
2.设置全局代理
在某些网络环境下,你可能需要为git配置代理,这很简单,只需要一行命令就可以了:
- git config --global https.proxy https://user:password@address:port
3.clone某个特定分支
在某些大型项目中,或者只是图方便,有时候你可能只希望clone某个分支,你可以这样做:
- mkdir $BRANCH
- cd $BRANCH
- git init
- git remote add -t $BRANCH -f origin $REMOTE_REPO
- git checkout $BRANCH
4.比较某个文件和远程分支上的区别
很简单:
- git diff localbranch remotebranch filepath
5.列出版本库中所有已删除的文件
也许你是想将其恢复,因此需要仔细确认某些merge操作,无论如何,列出版本库中所有已删除的文件会非常有帮助。你只需要这样做:
- git log --diff-filter=D --summary
如果你想将其恢复,参照这里。
如果你不想知道是哪次commit中删除的,只需要添加一个grep delete。
- git log --diff-filter=D --summary | grep delete
6.在版本库所有版本中搜寻一条字符串
往往你想要查找某段代码、某个函数、一个常量、一个文件,但是却找不到了。它被删除了,什么时候删除的?这个小技巧能搜索整个版本库中git diff信息,可能会花些时间,但是非常有用:
- git rev-list --all | (
- while read revision; do
- git grep -F 'Your search string' $revision
- done
- )
7.应用另外一个(不相关的)本地版本库中的patch
从另一个版本库中cherry-pick一条提交记录,首先需要将那个版本库作为一个远程版本库添加进来,并fetch其变化,然后cherry-pick其提交记录。
如果你追求速度,也可以使用这个未经优化的命令:
- 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分支:
- git checkout better_branch
2.保留better_branch分支全部内容,但是记录合并:
- git merge --strategy=ours master
3.切回mater
- git checkout master
4.快速合并
- git merge better_branch
5.如果你想让合并步骤变得更清晰,可以添加commit信息。只需要修改下第二步:
- git merge --strategy=ours --no-commit master
- git commit # Here add your custom message to the commit template
9.向分支提交一个初始的空commit,保证完全复位
这样会重写历史记录,所以只能在未和任何人分享前做,否则将可能把同事者的文件破坏。
1.创建一个新的空分支,例如:newroot
- git checkout --orphan newroot
- git rm --cached -r .
- git clean -f -d
2.创建空的commit
- git commit --allow-empty -m '[empty] initial commit'
3.重新发送分支的全部内容
- git rebase --onto newroot --root master
4.删除临时分支newroot
- git branch -d newroot
现在master就已经包含了一个空的root commit了。
10.清空一个分支来做些不同的事
有时候你会想要从某个分支重新开始,或者打算保留一些逻辑上和主干相关但是跟踪另一个跨职能方面的代码,就像GitHub项目的gh-pages。
但如果你只想重新开始某个分支,清空所有历史记录呢?
1.检出(checkout)一个分支:
- git checkout -b branch_to_zero
2.跟上条一样,先建立增加一个初始的空commit,之后就可以通过重新设置来清空一个分支。
3.使用hard重置分支到刚刚创建的初始commit:
- git reset --hard initial_commit
11.如何修改一个特定的commit?
当你想在推送前重做你最后的commit时,可以使用修改命令(git commit --amend)。如果你想修改的不是最后一个commit呢?
这种情况下,你可以使用git rebase,例如,你想要修改bbc643cd commit,运行下面的命令:
- $git rebase bbc643cd^ --interactive
在默认的编辑器中选择并修改你期望修改的,然后保存修改并输入:
- $ git add <filepattern>
现在你就可以使用
- $git commit --amend
来修改commit,之后使用
- $ git rebase --continue
返回之前最新的commit。
12.如何隐藏多个已修改文件中一个?
git stash --keep-index命令可以用来隐藏上次commit中没有add的东西,之后add想要提交的文件并运行相应命令就可以了。
按照下面的提示,你可以把一条老的commit提交到多个变更集中:
互动地rebase最后一条好的commit:
- git rebase -i last_good_commit
将某些变化标记为edit:
- git reset HEAD^
- git add file1 file2 file3
添加相应的文件:
- git add file1 file2 file3
因此之前没有添加的文件:
- git stash --keep-index
别忘了收尾:
- git commit
- git stash pop
有必要的话,重复第二步之后的步骤:
- git rebase --continue
原文链接:durdn.com
Git版本控制软件结合GitHub从入门到精通常用命令学习手册
http://www.ihref.com/read-16369.html
12个git实战建议和技巧的更多相关文章
- iOS-------应用性能调优的25个建议和技巧
性能对 iOS 应用的开发尤其重要,如果你的应用失去反应或者很慢,失望的用户会把他们的失望写满App Store的评论.然而由于iOS设备的限制,有时搞好性能是一件难事.开发过程中你会有很多需要注意的 ...
- iOS应用性能调优的25个建议和技巧
本文来自iOS Tutorial Team 的 Marcelo Fabri,他是Movile的一名 iOS 程序员.这是他的个人网站:http://www.marcelofabri.com/,你还可以 ...
- [转]iOS应用性能调优的25个建议和技巧
写在前面 本文来自iOS Tutorial Team 的 Marcelo Fabri,他是Movile的一名 iOS 程序员.这是他的个人网站:http://www.marcelofabri.com/ ...
- IOS 性能优化的建议和技巧
IOS 性能优化的建议和技巧 本文来自iOS Tutorial Team 的 Marcelo Fabri,他是Movile的一名 iOS 程序员.这是他的个人网站:http://www.marcelo ...
- iOS应用性能调优的25个建议和技巧【转】
转载自:http://blog.jobbole.com/37984/ 首页 最新文章 资讯 程序员 设计 IT技术 创业 在国外 营销 趣文 特别分享 更多 > - Navigation - ...
- Git详解之一 Git实战
Git详解之一 Git实战 入门 本章介绍开始使用 Git 前的相关知识.我们会先了解一些版本控制工具的历史背景,然后试着让 Git 在你的系统上跑起来,直到最后配置好,可以正常开始开发工作.读完本章 ...
- IOS开发-提升app性能的25条建议和技巧
前言 这篇文章介绍了作者开发工作中总结的25个iOS开发tips, 多年之前读过这篇文章.收益良多,基本每一个tips在我的应用开发过程中都使用过.今天把这篇文章又一次整理转发下,与大家一起学习,不论 ...
- 李洪强经典面试题30-iOS应用性能调优的25个建议和技巧
iOS应用性能调优的25个建议和技巧 本文来自iOS Tutorial Team 的 Marcelo Fabri,他是Movile的一名 iOS 程序员.这是他的个人网站:http://www.mar ...
- Git实战
Git实战 1.Git特点 1.1.Git两大特点 版本控制:可以解决多人同时开发的代码问题,也可以解决找回历史代码的问题. 分布式:Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器 ...
随机推荐
- Web安全 之 SQL注入
随着B/S模式应用开发的发展,使用这种模式编写的应用程序也越来越多.相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患.用户可以提交一段数据库查询代码,根据 ...
- JSON特殊字符处理
JSON 是适用于 Ajax 应用程序的一种有效格式,原因是它使 JavaScript 对象和字符串值之间得以快速转换.由于 Ajax 应用程序非常适合将纯文本发送给服务器端程序并对应地接收纯文本,相 ...
- 企业级搜索引擎Solr 第三章 索引数据(Indexing Data)[1]
转载:http://quweiprotoss.wap.blog.163.com/ Push data to Solr or have Solr pull it 尽管一个应用通过HTTP方式与Solr通 ...
- Android(java)学习笔记267:Android线程池形态
1. 线程池简介 多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力. 假设一个服务器完成一项任务所需时间为:T1 创建线程时间, ...
- 【Android 界面效果26】listview android:cacheColorHint,android:listSelector属性作用
ListView是常用的显示控件,默认背景是和系统窗口一样的透明色,如果给ListView加上背景图片,或者背景颜色时,滚动时listView会黑掉, 原因是,滚动时,列表里面的view重绘时,用的依 ...
- Android Studio常用快捷键汇总(mac)
查看原文:http://blog.csdn.net/u010818425/article/details/52266195 mac上按键符号 ⌥ : option / alt ⇧ : shift ⌃ ...
- Android中“再按一次返回键退出程序”实现
private long exitTime = 0; @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyC ...
- IOS开发UI篇之tableView 的用法详解
1.我们知道tableView是IOS中的高级视图,其继承与ScrollView,故我们知道他有具有ScrollView的所有功能.而且还扩展了许多.当然在这里就不一一介绍了. 2.tableView ...
- ASP.NET多线程下使用HttpContext.Current
本来要实现asp.net下使用tcp通讯方式向服务器获取数据,开始采用的方式是 参考: ASP.NET多线程下使用HttpContext.Current为null解决方案 http://www.cnb ...
- 一个网站的head和body是如何进行优化的
我们知道任何一个网站都要被解析成html后,浏览器才能识别,换句话说,用任何一门技术做的网站,都是被浏览器解析成为html.因此我们必须懂得,一个html页面由三部分组成,那就是html的开始标签和结 ...