学Git,用Git ③
不知道我前面是否将git讲清楚了,这里再稍微总结一下git的一个重要功能用法,同时增加两个很实用的git使用技巧。
1.git"读档"与git"回退"
我发现我之前似乎没有很好的理清git"读档"与git"回退"之间的关系,在此做以额外的说明。
(1)git"读档"
还记得我之前将commit操作比做"存档"的事吗?你可以随时使用git reset --hard(注意--与hard之间没有空格)<file name>进行"读档",还原你某次存档时的内容,当然,还有一种方法是使用git reset --hard HEAD^ 之前提过在这里就不再赘述。
(2)git"回退"
与git"读档"不同的地方在于,在工作中我们经常在存档之前就想反悔了,也即是说,我们不想保留现有的改动,想要"回退"到改动之前的部分。让我们想想在整个git结构中会出现反悔情节的"时机"。
A.工作区反悔:
在工作区就想反悔,即文件改了又改觉得不好,想要取消修改,这种情况下,又分两种情况:第一种情况是工作区的文件a之前已经add进入了暂存区,另一种情况是文件a没有在暂存区存在。git的风骚之处就在于总是有后悔药吃,这两种情况我们当然都有办法解决,解决方法是使用 git checkout -- <file name> 命令。这个命令会使工作区的被改动文件回退到最近的一次保留状态(注意,缓存区的文件也算作是“保留”)。
B.缓存区反悔:
当然,有时候我们意气风发一气呵成的将文件add到了缓存区,才恍然发现这其实并不是我们想要的结果。放心,git里总有后悔药吃,使用 git reset HEAD <file name>可以将缓存区文件重新退回到工作区,给你一次再来一次的机会。
所以,综合以上两种方式,我们可以轻松把控存档之前的任何文件改动环节,不知道你明白了吗?
2.忽略特殊文件
使用git时,经常会遇到一个问题就是,在使用 git status 命令查看目前仓库状况时,各环境下自动生成的一些文件总是出现在显示区域,使强迫症实在不能忍。git针对这种现象也给出了十分给力的解决方式,即在git仓库的根目录下创建一个.gitignore文件然后把要忽略的文件名填进去,Git就会自动忽略这些文件。
忽略文件的基本原则借用廖雪峰先生的说法分为以下三类:
- 忽略操作系统自动生成的文件,比如缩略图等;
- 忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库,比如Java编译产生的
.class
文件; - 忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件。
下面是.gitignore文件内容的一个示范:
# Windows:
Thumbs.db
ehthumbs.db
Desktop.ini # Python:
*.py[cod]
*.so
*.egg
*.egg-info
dist
build # My configurations:
db.ini
deploy_key_rsa
最后再附加一个各类配置文件大全,戳地址https://github.com/github/gitignore
3.自定义快捷键
用git用的久了,就是想再懒一点,每次手打git status老是手抖就会打错,不爽。
放心,git总是会让你爽起来,通过让你自定义快捷键的方式:
$ git config --global alias.st status
$ git config --global alias.co checkout
$ git config --global alias.ci commit
$ git config --global alias.br branch
$ git config --global alias.unstage 'reset HEAD'
$ git config --global alias.last 'log -1'
$ git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
别着急,我们现在就对这些代码进行说明,git config表示进行配置git,--global表示这项配置是针对所有git仓库的,因此你在任何时候都可以调用。之后的alias你可以看做是git里.git/config 文件中的一个属性名,你可以通过随后的.[name]为其添加你希望的快捷键名,并使用 空格+针对的git命令 对两者进行匹配。(对于全局git而言,自定义快捷键存储在git的隐藏文件.gitconfig中)。这样你就完成了git命令的重命名,下次使用git时,只要输入git st就可以实现git status的效果啦。
学Git,用Git ③的更多相关文章
- 最近学到的Git知识,大厂的Git机制还是很方便的
本文首发于微信公众号:程序员乔戈里 转载请注明:https://blog.csdn.net/WantFlyDaCheng/article/details/102538508 一.两次的 git com ...
- [Git] 还原Git上commit,但是没有push代码
直接在Idea上操作2步解决: 1. 找到: 2. 在To Commit里面填写:HEAD^,表示将commit的信息还原为上一次的,需要多次直接reset多次即可: 使用命令行:原理一样 以下内容转 ...
- 命令行操作svn和git和git
前几天在写代码的时候电脑突然坏掉,老大交代的任务没完成,非常痛恨自己用svn或者git保存代码,相信很多程序员遇到过,硬盘坏掉,存在硬盘中的代码丢失,无法找回的问题,svn和git可谓程序员界的福音, ...
- Git:Git初体验——Git安装配置
作为即将成为一个程序员的男人,一直在听别人说Git多好多好,之前也随便了解了一些,但是始终没有决心去学会.现在大四了,只有毕设和一门开学六七周只去过一次课的全员必修课外,也没有什么事情做,何不去做这些 ...
- 使用Git、Git GUI和TortoiseGit
1. 关于命令行 我一直建议在命令行中使用Git或者SVN.因为这样可能更加了解他们的工作方式,也不容易遗漏重要的问题和提醒. 在Windows习惯的驱使下,大多数人是不会看弹出的对话框中有什么信息的 ...
- git学习——git理解和仓库的创建
一.git用的3个工作的状态的理解. 1. 工作区 workspace(modified); 2. 暂存区 stage(staged) ; 3. git本地仓库 repository(commited ...
- git format-patch & git apply & git clean
一.打补丁 git format-patch & git apply 最近在工作中遇到打补丁的需求,一来觉得直接传文件有些low(而且我尝试了一下,差点把项目代码毁了) ,二来也是想学习一下, ...
- [git]图解git常用命令
本文图解git中最常用的命令.如果你稍微理解git的工作原理,这篇文章能够让你理解的更透彻. 基本用法 约定 命令详解 Diff Commit Checkout Detached HEAD(匿名分支提 ...
- Android Studio配置Git及Git文件状态说明
Android Studio配置Git还是比较简单的,麻烦的是可能中间出现各种问题.如果你想了解或感兴趣,请往下看. 首先你得下载Git客户端,网址:http://git-scm.com/downlo ...
- Git Server & Git Hook
http://ju.outofmemory.cn/entry/16893 我喜欢 github,我现在的个人代码全部是托管在上面了,但是一些公司或者某些项目不适合放入github中,你希望能有一个完全 ...
随机推荐
- 新浪博客:html+css+原生JS+Ajax初级+mySql数据库——源码
**************************************************************************************************** ...
- 使用MFC做D3D的框架
转载请注明出处http://www.cnblogs.com/CAION/p/3192111.html (程序运行时是和其他程序挺像 = =,但我保证这是原创的) 1.将D3D的初始化,渲染等等一些行为 ...
- datasnap rest Windows客户端编写
首先吐槽一下XE关于datasnap的资料真的是太少了... 服务端用DSHTTPService1控件可以实现http接口方式的调用,返回的都是json格式数据,适用于跨平台解析. 这里着重强调一下d ...
- hotspot的简单介绍
慢慢开始深入了解java,才知道java虚拟机有很多种,其中最为知名的应该就是hotspot了,接下来是hotspot的一点简单介绍. 没错,Java是解释语言,但并不意味着它一定被解释执行.早期 的 ...
- 使用selenium实现简单网络爬虫抓取MM图片
撸主听说有个网站叫他趣,里面有个社区,其中有一项叫他趣girl,撸主点进去看了下,还真不错啊,图文并茂,宅男们自己去看看就知道啦~ 接下来当然就是爬取这些妹子的图片啦,不仅仅是图片,撸主发现里面的对话 ...
- sails ORM组件 Waterline v0.10 英文文档
http://sailsdoc.swift.ren/ 这里有 sails中文文档 Introduction Installation Getting Started Models Data types ...
- JVM堆内存相关的启动参数:年轻代、老年代和永久代的内存分配
如果想观察JVM进程占用的堆内存,可以通过命令工具jmap或者可视化工具jvisualvm.exe.JVM这些启动参数都拥有默认值,如果想了解JVM的内存分配策略,最好手动设置这些启动参数.再通过JD ...
- 解决shell脚本参数传递含有空格的问题
有这样一个py文件,需要传一个字典作为参数: import json import sys def parse_params(data): json_data = json.loads(data[1] ...
- JSP页面实现自动跳转!
JSP页面实现自动跳转!一.页面自动刷新: 把如下代码加入<head>区域中<meta http-equiv=”refresh” content=”5″>注:content=” ...
- 搭建virtualenv
一.前言 1.什么是virtualenv? 在开发Python应用程序的时候,系统安装的Python3只有一个版本:3.4.所有第三方的包都会被pip安装到Python3的site-packages目 ...