git note

最近一段时间学习Git,并在github上注册了帐号,上传了一些自己写的玩具代码,在github上搭建了自己的blog。发现Git是个挺强大的工具,写点笔记以免遗忘。

Git和github简要介绍

  • Git 是一款分布式的版本控制系统,由Linux大神 Linus Torvalds为了维护 kernel 开发的。

  • Git 和以往的版本控制系统最大的不同就体现在它是分布式的,不是集中式的,不必要连接远程版本库,可以在本地进行提交,不依赖网络环境。

  • Git具有很优秀的分支和合并功能,便于团队协作,加快开发进度。

  • github 是个代码托管网站,用Git作为其版本控制工具,很好用,很多流行的应用就托管在上面,托管在上面的项目可以方便的 fork, pull request, issuse, 即Social Coding。

Git 基本命令

  • 创建现场版本库,并初始化。

    $ git init
    
  • 添加文件并提交,在修改任何文件的时候,必须先 add,然后 commit,不容许空
    commit。

    $ git add filename
    $ git commit -m "your commit."
    
  • Git checkout 命令,实质上是修改 HEAD 的指向。

    $ git checkout *** # 可以处于分离头指针的状态,Git无法跟踪,回到
    具体的 branch 要执行 marge 命令。
    
  • Git reset 命令,一直在 HEAD 分支中操作,用指定提交状态的文件替换掉暂存区的文件。

    $ git reset HEAD <paths> # 取消之前的 git add <paths> 命令,
    即用 HEAD 中的上次 commit 的文件替换暂存区的文件。
    
  • Git stash 命令。用来保存和恢复进度。

    $ git stash # 保存当前工作进度,会对暂存区和工作区的状态进行保存。
    $ git stash list # 保存进度列表
    $ git stash pop # 恢复最新的工作进度,并从列表中删除
    $ git stash apply # 恢复最近的工作进度,但是不从列表中删除
    
  • Git 其他基本命令。

    $ git rm # 删除命令
    $ git add # 添加命令
    $ git add -u # 所有改动添加到暂存区
    $ git add -i # 选择性添加,交互模式
    $ git mv # 改名
    $ git cat-file # 和 Linux 中的 cat file 类似
    $ git rev-parse # 功能很多暂时没搞明白
    

Github 相关命令

# 本地建立github.com 项目克隆    
$ git clone [email protected]:USERNAME/REPOSITORY.git    
# 添加远程版本库    
$ git remote add origin [email protected]:USERNAME/REPOSITORY.git    
$ git push # 上传
$ git pull # 下载

Github 建立blog

在 github.com 上托管 blog,很酷,免费,而且还可以用 git 进行管理。github.com
上托管的都是静态的网页,一般用 Jekyll 进行维护。项目在GitHub的托管地址:
http://github.com/mojombo/jekyll/ ,专有的URL地址为:http://jekyllrb.com/。

本 blog 用的是 jekyllbootstrap, URL地址为 http://jekyllbootstrap.com/。建立
blog 很简单:

  • 像普通的项目一样在 github.com 上建立如 USERNAME.github.com 的项目。

  • 在本地安装 Jekyll-Bootstrap

    $ git clone https://github.com/plusjade/jekyll-bootstrap.git USERNAME.github.com
    $ cd USERNAME.github.com
    $ git remote set-url origin [email protected]:USERNAME/USERNAME.github.com.git
    $ git push origin master
    
  • 安装 Jekyll, 需要 Ruby 支持

    $ gem install jekyll
    # 如果没有安装 Ruby 和 gem 在 ubuntu 下执行
    $ sudo apt-get install ruby gem
    # jekyll 自带的有服务器,启动后访问 http://localhost:4000/    
    $ cd USERNAME.github.com 
    $ jekyll --server
    # remember to change USERNAME to your GitHub username.
    
  • 生成 post

    $ rake post title="your post title"
    # 生成 time-tittle.md 的文档,在 _posts 目录下,无法生成
    # 带中文的目录,如果想用中文的可以手动修改。
    # 文档为 *.md 是 Markdown 标记语言解析的,比较简单。
    
  • push 到 github.com

    $ git push
    

参考资料

  1. Git 权威指南
  2. GotGitHub
  3. jekyllbootstrap
  4. sixpoint’s blog