Posts Tagged ‘git’

how to merge individual commit in git

Thursday, July 9th, 2009

在用 git 开发的过程中,通常不同的 feature 会在不同的 branch 中开发,再 merge 到 master branch 中。但有时候会需要从某个 branch 中合并几个文件或某个 commit 进来,方法有两种:

1、合并几个文件(参考链接
git checkout source_branch <paths>…

2、合并某个 commit(参考链接
git cherry-pick <commit id>

setup rails edge on Windows XP

Wednesday, February 25th, 2009

帮朋友在 Windows XP 上搭建 rails 开发环境, 想想已经两年没正经用 windows, 不过这次一路搞下来还比较顺利. 简单记录一下步骤:

首先去 rubyforge.org 上下载 all-in-one ruby installer, 安装以后已经默认加好了路径, c:\ruby -v 应该可以看到. 这次我还是装了 1.8.6, 不过看 1.8.7 已经到了 rc2, 不远了.

第二步升级 gem update –system, 把 gem 本身升级一下.

接下来 gem install rails –include-dependencies 安装 rails, 其实如果用 edge 的话也可以不安装.

然后 gem install mongrel, 用来做本地服务器

装 Netbeans 6.5 做 IDE, 现在注册下载后推荐三个朋友也下载可以得到一个 2G U盘, 我照着做了, 看什么时候能收到 XD

最后装 Mysql, 开始装了 5.1 作为 Windows 服务, 但是启动 rails app 的时候连接 mysql 失败, 发现 rails 2.3 中去掉了 mysql.rb 这个默认驱动, 必须自己安装.

gem install mysql 报错说文档生成的时候有问题, 卸掉重装 gem install mysql –no-ri –no-rdoc, 可以绕过错误

后来又发现莫名奇妙的错误, 解决方法是把 mysql 现在的一个 dll 拷贝到 ruby\bin 下面, 后来又出现 Mysql 服务不能启动的问题, 最后换了 Mysql 5.0, 用 mysqld-nt 手动添加服务搞定.

最后还要装 Git, windows 上面有个 msysGit 可以用, 不过感觉巨慢, 不知道是 windows 上的性能不好, 还是朋友的机器太肉. 通过 git bash 直接导出项目会发现所有的文件都是 modified, 不用说肯定是文件结束符的问题, 之前就发现过但是没找到解决办法, 当时还被迫把项目转回了 svn, 这次发现 github.com 已经有解决方案了: deal with newlines in git.

这下完事大吉了.

开始用 rails edge & git

Monday, August 18th, 2008

通过 git 在本地创建一个 rails edge:

git clone github.com/rails/rails.git

以后用 rails edge 创建 rails 项目的时候需要先更新一下 edge,然后用 edge 里面的 rails 脚本来创建项目:

cd ~/rails
git pull
ruby ~/rails/railties/bin/rails myapp

然后在项目中初始化一下 git repository:

git init

此时用 git status 查看可以看到项目中的所有目录都是 untacked,先创建一个 .gitignore,设置一下 git 的文件忽略规则:

log/*.log
tmp/**/*
doc/api
doc/plugin
doc/app
vendor/rails
config/database.yml

由于 git 不会管理空目录,所以如果我们想添加一个空的 log/ 和 tmp/ 到 git repository 中的话可以在两个目录里面分别创建一个 .gitignore:

touch tmp/.gitignore
touch log/.gitignore

然后添加所有 untracked file 并 commit 所有的东西:

git add .
git commit -m ‘init rails project’

再用 git status 看看,nothing to commit (working directory clean)

最后添加一下远程 repository 的地址再将所有刚才 commit 的东西 push 到远端:

git remote add origin your_repository_path
git push origin master

这时就完成所有的提交工作了。

以后写代码的时候,先创建自己的一个 branch,尽量不要在 master branch 上直接修改:

git branch -b my_branch

修改完成准备提交的时候,回到 master branch 上和自己刚才工作的 branch 进行 merge,然后再提交:

git checkout master
git merge my_branch

因为要用 rails edge,所以肯定要在 vendor/ 中 freeze rails edge,一个可以用 rake rails:freeze:edge,这样是下载 rubyonrails.org 上面的一个 edge.zip;另一种方法可以使用从 rails edge 的 git repository 上 clone 一个:

git submodule add github.com/rails/rails.git vendor/rails
git submodule init
git submodule update

好了现在基本可以干活了。

参考文章:
http://www.robinlu.com/blog/archives/194
http://toolmantim.com/article/2007/12/5/setting_up_a_new_rails_app_with_git
http://www.caiwangqin.com/post/527