感觉用github管理自己平时的一些代码挺方便的,尤其还有各种统计,作为一个码农,就有一种每日签到、累计签到统计的感觉。用github,学习git自然是不可避免的,原先只是用几个 git clone 、 git add 、 git commit 、 git pull 、 git push 、 git log 等命令,一般的使用凑合能应付吧,主要使用github在线看历史修改。不过有时确实想本地看下历史代码,或者有些类似撤销( git reset )操作不学会真实失去了用代码版本控制的意义了,就打算好好学下git吧,以前都逃避了。以前在公司用过hg,不过当时就是一知半解,很多操作还得让同事来帮一下,这种东西了解一下内部工作原理还是有必要的。有时事情就是这样,一个软件应该是做到足够的友好,让用户不用花太多心思去了解软件的内部机理,不过不了解还真用不好,像其他语言、库也是一样。

看到很多都推荐《Git权威指南》,看了20章感觉看不下去了,后来又有人说《Pro Git》不错,看了一下确实比前面一本讲的浅显一点,图比较多,看着舒服一点,当然也不排除已经看第一本感觉后者容易了的可能。

Pro Git中Chapter 9 Git 内部原理(9.1~9.3)非常值得一看,个人感觉看过后就能更好的理解那些常用操作的原理了(所以可以在基本的几个操作会后马上试一下),也就不用去硬记一些流程了。

本来还想自己写点Git操作的,不过Pro Git真正非常不错,直接去那里看吧。

推荐:

Pro Git(有中文版翻译) http://git-scm.com/book/

Git图解:http://marklodato.github.io/visual-git-guide/index-en.html

还是要平常记录一下,用用一些常用的稍稍有点复杂的功能否则一会儿就忘了。

Git 命令别名

git status这个命令肯定是使用频率最高的一个,完完整整打个status挺累得,好在可以给git后面的这些子命令取一些别名:

git config --global alias.st status

config子命令用来修改配置文件,--global由于指出修改的时全局配置文件而不是用户的或者是这个项目的,alias.st status表示用st这个别名来代表status这个命令。所以现在可以这样使用了:

git st

当然不能走极端把什么commit改成ci之类的,commit这么有成就感的命令,越长越好。

Git log 查看commit-id,日志

每次commit,git都有一个唯一的id,可以通过git log命令获取

Git reset 恢复文件

1. 准备commit时,发现把还没改完的文件用git add 放到暂存区了,想把它移出来等到下一次在commit

$ git reset HEAD path/to/file

这也是git add后会给出的提示

2. 如果想让当前工作目录回到某个commit时的样子,可以如下(所有目前未commit的更改都会没有):

$ git reset --hard commit-id 

commit-id可以通过git log来获取

Git 小记的更多相关文章

  1. Git小记

    Git简~介 Git是一个分布式版本控制系统,其他的版本控制系统我只用过SVN,但用的时间不长.大家都知道,分布式的好处多多,而且分布式已经包含了集中式的几乎所有功能.Linus创造Git的传奇经历就 ...

  2. git --help出来的命令 + eclipse里用git小记

    用法:git [--version] [--help] [-C <path>] [-c name=value]           [--exec-path[=<path>]] ...

  3. Git 的 WindowsXP安装

    文章1: http://blog.sina.com.cn/s/blog_5063e4c80100sqzq.html 一.安装必要客户端 1. TortoiseGit http://tortoisegi ...

  4. git stash错误小记

    git出错小记 想要push代码,我们经常这样做. 1.查看状态 git status 2.隐藏本地编辑的新内容 git stash 3.拉远程的代码 git pull 这一步操作有的时候会报错,没有 ...

  5. Git使用小记

    刚刚简答的完成了pureblog,想着先上传导Github上去,等着以后有时间了在完善其功能,所以使用Git上传导Github代码仓库上去,这里简答的记录以下使用小计. 我们首先下载Git,我们使用用 ...

  6. Mac git提交步骤小记

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; line-height: 19.0px; font: 13.0px "PingFang SC"; c ...

  7. git基础使用小记

    一.安装步骤省略二.运行“Git Bash“在打开的窗口中输入:ssh-keygen -t rsa -C "my@gmail.com" 会提示SSH Public Keys存放的位 ...

  8. git仓库构建小记

    1.新建 .git 文件夹 约定的文件目录下,新建 .git 文件夹 mkdir test.git 2.初始化服务端仓库 git init --bare test.git 此时进入 test.git ...

  9. git学习笔记 看廖大神视频小记

    1.创建一个空目录 $ mkdir gittemp $cd gittemp $pwd //x显示当前目录 2.$ git init 把这个目录变成git可以管理的仓库 多的一个隐藏的.git 目录 可 ...

随机推荐

  1. Zookeeper之Curator(1)客户端基本的创建,删除,更新,查找操作api

    Curator Framework提供了简化使用zookeeper更高级的API接口.它包涵很多优秀的特性,主要包括以下三点: 自动连接管理:自动处理zookeeper的连接和重试存在一些潜在的问题: ...

  2. Gson简单使用

    最近做个IM类型的Android 应用,由于有三种客户端(pc,ios,Android),所以底层使用的是C++与服务器通信,所以通信部分基本上有c++完成,封装好Jni即可,可以把底层c++通信看成 ...

  3. ffmpeg开发基础知识

    1.音频采集 面临的问题:延时敏感,噪声消除,回声消除,静音检测 主要参数: 采样率,位宽,声道数,音视频帧 采样率: 也称为采样速度或者采样率,定义了每秒从连续信号中提取并组成离散信号的采样个数,它 ...

  4. 验证resneXt,densenet,mobilenet和SENet的特色结构

    简介 图像分类对网络结构的要求,一个是精度,另一个是速度.这两个需求推动了网络结构的发展. resneXt:分组卷积,降低了网络参数个数. densenet:密集的跳连接. mobilenet:标准卷 ...

  5. POJ 1247

    #include<iostream> using namespace std; int main(){ ,sum=; int * guest; do{ sum=; sam_num=; ci ...

  6. WPF快速实现XML可视化编辑工具

    虽然最近业余时间主要都放在研究AngularJS上了,不过由于正好要帮朋友做一个生成XML的小工具,顺便又温顾了一下WPF.虽然这个时代相对于Web应用和移动App,Windows应用程序是越来越少了 ...

  7. Numpy 数组的切片操作

    实例+解释如下(表格):关键是要明白python中数组的下标体系.一套从左往右,一套从右往左. 1 import numpy as np 2 import sys 3 4 def main(): 5 ...

  8. 【Java并发编程】:并发新特性—Executor框架与线程池

    Executor框架简介 在Java5之后,并发编程引入了一堆新的启动.调度和管理线程的API.Executor框架便是Java 5中引入的,其内部使用了线程池机制,它在java.util.cocur ...

  9. CSS3中的pointer-events

    今天做项目中偶然误把元素加上了pointer-events属性,结果导致后来在js中给该元素加点击事件不能用,检查了半天才发现是这个属性的问题.之前没有好好研究,于是决定仔细研究一下. 一.定义及语法 ...

  10. Python -- 网络编程 -- Socket发送文件

    客户端如果直接send两次,一次发文件名,一次发文件内容 服务端接受的时候会一起接收,不知怎么分开发送,或者分开接收, 或者全部接收再解析内容 今天发现传送mp3文件的时候没问题,传送文本文件的话,以 ...