Git 进阶:10大技巧让你迅速提升
1.Git自动补全
假使你使用命令行工具运行Git命令,那么每次手动输入各种命令是一件很令人厌烦的事情。
命令:
cd ~
curl https://raw.github.com/git/git/master/contrib/completion/git-completion.bash -o ~/.git-completion.bash
然后,添加下面几行到你的 ~/.bash_profile 文件中:
if [ -f ~/.git-completion.bash];then
.~/.git-completion.bash
fi
2.在Git中忽略文件
Git忽略掉那些特定的文件和文件夹,只需要创建一个名为 .gitgnore然后列出那些你不希望Git跟踪的文件和文件夹。
你还可以添加例外,通过使用感叹号(!).
*.pyc
*.ext
my_db_config/
!main.pyc
3. 显示文件中每一行的作者,最新的变更提交和提交时间展示出来。
git blame [file_name]
git blame demonstration
4.查看仓库历史记录
上一节我们已经学习了如何使用git log,不过,这里还有三个你应该知道的选项。
--oneline- 压缩模式,在每个提交的旁边显示经过精简的提交哈希码和提交信息,以一行显示。
-graph- 图形模式,使用该选项会在输出的左边绘制一张基于文本格式的历史信息表示图。如果你查看的是单个分支的历史
记录的话,该选项无效。
--all- 显示所有分支的历史记录
5 绝对不要丢失对commit的跟踪
假设你不小心提交了你不想要的东西,不得不做一次强制重置来恢复到之前的状态。然后,你意识到在这一过程中
你丢失了其他一些信息并且想要把他们找回来,或者至少看一眼,这正是git reflog可以做到的。
一个简单的git log 命令可以为你展示最后一次commit,以及他的父亲,还有他父亲的父亲等等。
而git reflog则列出了head曾经指向过的一系列commit。要明白他们只存在于你本机中;而不是你的版本仓库的一部分,
一不包含在push和merge操作中。
6.暂存文件的部分改动
一般情况下,创建一个基于特性的提交是比较号的做法,意思是每次提交都必须代表一个新特性的产生或者
是一个bug的修复。如果你修复了两个bug,或者添加了多个新特性但是却没有提交这些变化会怎样呢,
在这种情况下,你可以把这些变化放在一次提交中。但更好的方法是把文件暂存(Stage)然后分别提交。
例如你对一个文件进行了多次修改并且想把他们分别提交。这种情况下,你可以在add命令中加上-p参数
git add -p [file_name]
我们来演示一下在file_name文件中添加了3行文字,但只想提交第一行和第三行。先看一下git diff 显示的结果:
7.压缩多个commit
用rebase命令把多个commit压缩成一个
git rebase -i HEAD~[number_of_commits]
如果你想要压缩最后两个commit ,你需要运行下列命令。
git rebase -i HEAD~2
9.检查丢失的提交
尽管 reflog是唯一检查丢失提交的方式。但它不是适应于大型的仓库。那就是fsck(文件系统检测)
git fsch --lost-found
Git 进阶:10大技巧让你迅速提升的更多相关文章
- 快速开发 jQuery 插件的 10 大技巧(转)
1. 把你的代码全部放在闭包里面 这是我用的最多的一条.但是有时候在闭包外面的方法会不能调用.不过你的插件的代码只为你自己的插件服务,所以不存在这个问题,你可以把所有的代码都放在闭包里面.而方法可能应 ...
- 程序员心髓:移动应用API设计10大技巧
移动App与基于Web/云服务发生对话是很常见的事情,最简单的可能仅仅只是检索数据,但也可能包含发送数据.用户授权和管理.而这也就验证了为移动应用建立API的重要性,为此,我们特总结了10大移动API ...
- 快速开发 jQuery 插件的 10 大技巧(转)
转自:http://www.oschina.net/news/41776/jquery-10-tips 在开发过很多 jQuery 插件以后,我慢慢的摸索出了一套开发jQuery插件比较标准的结构和模 ...
- 快速开发 jQuery 插件的 10 大技巧
在开发过很多 jQuery 插件以后,我慢慢的摸索出了一套开发jQuery插件比较标准的结构和模式.这样我就可以 copy & paste 大部分的代码结构,只要专注最主要的逻辑代码就行了. ...
- 快速开发jQuery插件的10大技巧
原文链接:http://wiki.itivy.com/?p=36 在开发过很多 jQuery 插件以后,我慢慢的摸索出了一套开发jQuery插件比较标准的结构和模式.这样我就可以 copy & ...
- linux服务器安全配置10大技巧
1.禁止ping/etc/rc.d/rc.localecho 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all2.对用户和口令文件进行权限控制chmod 6 ...
- [转]成为优秀Java程序员的10大技巧
转自:http://www.codeceo.com/article/10-good-java-programmer-tips.html Java程序员有许多应遵循的守则或最佳实践方式.本文概述了每个开 ...
- java数组10大技巧
0. 声明一个数组(Declare an array) String[] aArray = new String[5]; String[] bArray = {"a"," ...
- 让PHP开发者事半功倍的十大技巧
如果你使用一面大镜子作为冲浪板会发生什么?或许你会在较短的时间内征服海浪,但是你肯定从内心深处明白,这不是冲浪的正确选择.同样的道理也适用于PHP编程,尽管这样的类比听起来有一些古怪.我们经常听到有人 ...
随机推荐
- es6模块化规则(一)
抄自阮一峰ECMAScript 6 入门 export命令 模块功能主要由两个命令构成:export和import.export用于规定模块的对外接口,import用于引入其他模块提供的方法功能. 一 ...
- poj 2115 扩展欧几里德
#include<stdio.h> #include<string.h> #define max 32 typedef long long LL; LL pow2[max+]; ...
- 两张图搞清composer install与update区别 - 今日头条(www.toutiao.com)
composer update : 主要是在开发阶段使用,根据我们在composer.json文件中指定的内容升级项目的依赖包. composer install : 主要是在部署阶段使用,以便在生产 ...
- pip 异常问题
场景:安装的python版本为3.6.4 在使用pip命令时,出现错误:Did not provide a command 如下图所示: 解决办法:pip带上后缀.exe 为什么会出现这种情况? 主要 ...
- MyEclipse优化】-----如何合理设置MyEclipse中的validation选项
打开eclipse,点击[window]菜单,选择[preferences]选项. 在左侧点击[validation]选项,在右侧可以看到eclipse进行的自动检查都有哪些内容. 将Manual(手 ...
- java 将word转为PDF (100%与word软件转换一样)
jdk环境:jdk_8.0.1310.11_64 (64位) 1.引入pom文件 <!-- word转pdf(依赖windows本地的wps) --> <dependency& ...
- DIV元素垂直居中的分析与实现
首先,对于需要垂直居中的元素常规居中处理 margin: 0 auto; 接下来要设置div的祖先元素的宽高为100%, 在默认的设置中他们都为0: html, body { width: %; he ...
- 总体<导学>
有一些奇奇怪怪的数据集 波士顿房价数据集 使用sklearn.datasers.load_boston 加载相关的数据集 重要参数 return_X_y 表示是否返回target (价格) 默认为Fa ...
- settings.gradle与build.gradle有什么区别
参考回答 settings.gradle文件是gradle项目的总体配置文件,一般会把子项目中通用的一些配置放在这个文件中,有点雷士与maven的parent pom 文件. build.gradle ...
- PHP学习(字符串操作)
在PHP中,字符串的定义可以使用英文单引号' ',也可以使用英文双引号" ".单引号和双引号到底有啥区别呢? PHP允许我们在双引号串中直接包含字串变量.而单引号串中的内容总被认 ...