参考:
http://blogs.gaixie.org/tommy/?p=146
http://www.tsingfeng.com/2011/06/03/git%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8%E6%89%8B%E8%AE%B0/
http://www.oschina.net/question/234345_52673
这里git的版本是Git-1.7.8-preview20111206
apache 服务的版本是 Git-1.7.8-preview20111206
乌龟版本 TortoiseGit-1.8.1.0-32bit.msi
装好 msysgit以后,进入你的 git 安装目录 C:\Program Files\Git\libexec\git-core 下找到一个 git-http-backend.exe 文件,双击运行一下,如果提示缺少一个 libiconv-2.dll 文件,需要你手工将这个文件从 C:\Program Files\Git\bin 目录复制到 C:\Program Files\Git\libexec\git-core 目录中。
安装完成后 将 C:\Program Files\Git\bin下的 libiconv2.dll 和 libiconv2.dll 拷贝到 C:\Program Files\Git\libexec\git-core 目录下
httpd.conf
文件,默认是安装在
C:\Program Files\Apache Software Foundation\Apache2.2\conf
目录下,编辑这个文件,在文件的末尾加上下面的内容:
SetEnv GIT_PROJECT_ROOT C:/Users/Tommy/git
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAliasMatch \
"(?x)^/git/(.*/(HEAD | \
info/refs | \
objects/(info/[^/]+ | \
[0-9a-f]{2}/[0-9a-f]{38} | \
pack/pack-[0-9a-f]{40}\.(pack|idx)) | \
git-(upload|receive)-pack))$" \
"C:/Program Files/Git/libexec/git-core/git-http-backend.exe/$1"
<Directory "C:/Program Files/Git/libexec/git-core/">
Allow From All
</Directory>
新建目录 C:\Users\Tommy\git
在这个目录下运行git init --bare sandbox.git
初始化出版本库
D:\Work>git clone http://127.0.0.1/git/sandbox.git
Cloning into 'sandbox'...
warning: You appear to have cloned an empty repository.
本地提交啥的到此都OK,下一次考虑和服务器同步
$ mkdir myproject.git
$ cd myproject.git
$ git init --bare
这里需要注意--bare参数,表示是要生成一个"干净"的仓库,仅包含历史代码不包含工作代码。如果是希望初始化一个已存在的代码库,也可以类似如下命令替换最后一行git命令:
$ git clone --bare /path/to/my_project myproject.git
提交到远程库命令
git push origin master
gitweb 配置 ~~~~~~~ msysgit 安装包里自带 perl ,但是缺少 cgi.pm 模块, 需要从 CPAN 下载 解压缩后, 将
lib
下的文件复制到C:\Program Files\Git\lib\perl5\5.8.8
目录下。继续修改 apache 的 httpd.conf 文件,在文件最后再增加下面的内容:
修改 gitweb.cgi 第一行, 使用 msysgit 中自带的 perl
修改 git 命令的位置
修改我们 git 仓库的位置, 注意, 如果你的仓库在
c:\Users\Tommy\git
目录, 应该按照下面的写法还需要在
C:/Program Files/Git/
目录下创建一个 tmp 目录。
重起 apache ,开浏览器,访问 http://localhost/gitweb不知为什么,通过 msysgit 里自带的 perl 在 apache 中运行 gitweb 速度很慢,但我直接通过下面的命令执行
gitweb.cgi
却很快所以这里不建议配置 gitweb,只供参考。
git config --global user.name "Your Name"
git config --global user.email you@example.com