Git学习笔记(5) — 独立开发者所用的命令(a)
2010-04-19 11:51:36 | 作者:haijd
独立开发者的最大特点就是他们不需要和其他人来交换补丁,而且只在一个独立的固定的git仓库中工作。
下面这些命令将可以帮助你完成日常工作:
git-show-branch:可以显示你当前所在的分支以及提交记录。
git-log:显示提交日志
git-checkout或者git-branch:用于切换和创建分支
git-add:用于将修改内容加入到index文件中
git-diff和git-status:用于显示开发者所做的修改
git-commit:用于提交当前修改到git仓库。
git-reset和git-checkout:用于撤销某些修改
git-merge:用于合并两个分支
git-rebase:用于维护topic分支(此处我也不太懂,等完成git学习后转过头来会关注此问题)
git-tag:用于标记标签。
Git学习笔记(4) — 基本命令
2010-04-19 11:38:35 | 作者:haijd
转自:http://blog.prosight.me/index.php/2009/07/281
git init
初始化一个本地目录,加入版本管理
git clone
克隆一个版本库(repository)到一个新的目录,命令格式:
git clone [–template=<template_directory>] [-l] [-s] [–no-hardlinks] [-q] [-n] [–bare] [–mirror] [-o <name>] [-u <upload-pack>] [–reference <repository>] [–depth <depth>] [–] <repository> [<directory>]
在clone后, 执行不带参数的git fetch的命令将更新远端的任何branches, 而执行不带参数的git pull的命令将merge远程的master branch到当前master branch
表示要clone的仓库名称,可以是本地或者远程的。仓库可以由以下几种表现方式:
rsync://host.xz/path/to/repo.git/
http://host.xz[:port]/path/to/repo.git/
https://host.xz[:port]/path/to/repo.git/
git://host.xz[:port]/path/to/repo.git/
git://host.xz[:port]/~user/path/to/repo.git/
ssh://[user@]host.xz[:port]/path/to/repo.git/
ssh://[user@]host.xz/path/to/repo.git/
ssh://[user@]host.xz/~user/path/to/repo.git/
ssh://[user@]host.xz/~/path/to/repo.git
其中ssh是默认协议,所以如果使用ssh协议可以不写ssh的协议名。
如果使用本地仓库,可以使用以下路径:
/path/to/repo.git/
file:///path/to/repo.git/
使用以上仓库路径,就相当于显式的使用了-l或-local参数。表示你本地的路径名,会将远程的仓库的内容clone这个目录里面。
参考:
Git学习笔记(3) — 标记(tag)
2010-04-19 10:55:43 | 作者:haijd
转自:http://blog.prosight.me/index.php/2009/07/279
当执行git log
$ git log
<strong>commit 29293409f6d4a389fee75bd42fba5194fee5b899</strong>
Author: elton <elton.zheng.sh@gmail.com>
Date: Wed Jul 22 12:26:11 2009 +0800
…
其中commit后面的数字是一个唯一的版本号,每次提交都不同。
Git学习笔记(2) — 分支控制(branch)
2010-04-19 10:57:54 | 作者:haijd
转自:http://blog.prosight.me/index.php/2009/07/277
git branch
列出所有的分支, -r参数表示列出所有远程的分支
git branch
建立一个名为的分支,使用当前版本作为这个新分支的版本
git branch
建立一个名为的分支, 使用指定的 作为新分支的版本,这个start-point可以是其他的分支名称或者tag名称。
git branch -d
删除分支 ; 如果你要删除的分支并没有被merge到当前分支的话,将产生一个错误提示。
git branch -D
同-d,但是不管要删除的分支是否已经merge到当前分支,都会删除
git checkout
切换当前分支到 , 更新 working directory 到 所对应的版本
git checkout -b
按照的版本建立一个新的分支,然后再checkout到这个分支上。
Git学习笔记(1) — 创建和修改项目
2010-04-19 10:59:58 | 作者:haijd
转自:http://blog.prosight.me/index.php/2009/07/274
当你设置好gitosis(使用gitosis来配置管理git服务器端)后,就可以使用git来管理你的项目了。
当新创建一个项目的时候,需要在gitosis的gitosis.conf文件中添加对应的项目
# cd gitosis-admin
# vim gitosis.conf
添加:
[group myteam] #team名称
members = elton@macbook #开发者名称
writable = project_name #项目名称,表示members中的开发者对这个项目可写
之后,进入你这个项目的目录,执行以下命令
$ cd your_project
$ git remote add origin git@YOUR_SERVER_HOSTNAME:project_name.git
其中projectname.git中的projectname跟gitosis.conf中的项目名称一样。添加远程repo
小组级git服务器搭建
2010-04-19 11:31:46 | 作者:haijd
转自:http://blog.prosight.me/index.php/2009/11/485
如果使用git的人数较少,可以使用下面的步骤快速部署一个git服务器环境。
1、生成 SSH 公钥
每个需要使用git服务器的工程师,自己需要生成一个ssh公钥 进入自己的~/.ssh目录,看有没有用 文件名 和 文件名.pub 来命名的一对文件,这个 文件名 通常是 id_dsa 或者 id_rsa。".pub"文件是公钥,另一个文件是密钥。假如没有这些文件(或者干脆连 .ssh 目录都没有),你可以用 ssh-keygen 的程序来建立它们,该程序在 Linux/Mac 系统由 SSH 包提供, 在 Windows 上则包含在 MSysGit 包里:
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/schacon/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/schacon/.ssh/id_rsa.
Your public key has been saved in /Users/schacon/.ssh/id_rsa.pub.
The key fingerprint is:
43:c5:5b:5f:b1:f1:50:43:ad:20:a6:92:6a:1f:9a:3a schacon@agadorlaptop.local
它先要求你确认保存公钥的位置(.ssh/id_rsa),然后它会让你重复一个密码两次,如果不想在使用公钥的时候输入密码,可以留空。
使用gitosis来配置管理git服务器端
2010-04-19 11:32:03 | 作者:haijd
转自:http://blog.prosight.me/index.php/2009/07/271
1、安装git
emerge -av dev-util/git
2、安装gitosis
git环境默认是可以直接使用的,但需要为每个成员开ssh权限帐号,且各个仓库之间的交叉权限管理很麻烦,所以需要使用gitosis, 它无需为每个开发人员开设ssh帐号,安全方便。
emerge -av gitosis
如果提示这个包被mask了,需要编辑/etc/portage/package.keywords文件,在里面加入
dev-util/gitosis ~amd64
Linux LVM 学习笔记
2010-04-16 17:52:32 | 作者:haijd
参考资料:http://hi.baidu.com/movieyouth/blog/item/9f6a7ceccbec8bd02f2e2115.html
扫描 LVM 分区:
# lvmdiskscan -l
查看物理卷 (即 LVM 中硬盘的盘片):
# pvdisplay
查看卷组 (即 LVM 中的硬盘):
# vgdisplay
查看逻辑卷 (即 LVM 中的分区):
# lvdisplay
NoSQL数据库探讨之一 - 为什么要用非关系数据库?
2010-03-15 11:17:43 | 作者:haijd
转载自:http://robbin.javaeye.com/blog/524977
随着互联网web2.0网站的兴起,非关系型的数据库现在成了一个极其热门的新领域,非关系数据库产品的发展非常迅速。而传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,例如:
1、High performance - 对数据库高并发读写的需求
web2.0网站要根据用户个性化信息来实时生成动态页面和提供动态信息,所以基本上无法使用动态页面静态化技术,因此数据库并发负载非常高,往往要达到每秒上万次读写请求。关系数据库应付上万次SQL查询还勉强顶得住,但是应付上万次SQL写数据请求,硬盘IO就已经无法承受了。其实对于普通的BBS网站,往往也存在对高并发写请求的需求,例如像JavaEye网站的实时统计在线用户状态,记录热门帖子的点击次数,投票计数等,因此这是一个相当普遍的需求。
了解 NoSQL 的必读资料
2010-03-15 11:12:56 | 作者:haijd
转载自:http://blog.csdn.net/DL88250/archive/2010/01/14/5191092.aspx
NoSQL 是非关系型数据存储的广义定义。它打破了长久以来关系型数据库与 ACID 理论大一统的局面。NoSQL 数据存储不需要固定的表结构,通常也不存在 连接 操作。在大数据存取上具备关系型数据库无法比拟的性能优势。该术语在 2009 年初得到了广泛认同。
当今的应用体系结构需要数据存储在 横向伸缩性 上能够满足需求。而 NoSQL 存储就是为了实现这个需求。Google 的 BigTable 与 Amazon 的 Dynamo 是非常成功的商业 NoSQL 实现。一些开源的 NoSQL 体系,如Facebook 的 Cassandra,Apache 的 HBase,也得到了广泛认同。