[原]五分钟搭建gitserver

本来在忙一些事情,结果刚才突然收到一个临时的事情,号称很着急。

问了一下,原来是需要在本地搭建一个git库,但其实之前我是有做过gitserver的,不过是在阿里云(部分分布在青云)上,而且目前在使用过程中。

为什么需要重新在本地再搭建一个?

问了之后,才知道原来是这样的,同事要在本地折腾和编译android原生ROM,而android原生的ROM比较大,有10GB左右,上传到之前的外部代码库需要的时间很长。故而,需要在本地有一个gitserver,并将代码提交到本地git库中。

好吧,先丢下手头的事情,开搞。

第一步.下载安装文件:

ssh到目标机器上,然后下载git安装包:

cd /opt

wget https://bitnami.com/redirect/to/68287/bitnami-gitorious-3.2.1-1-linux-x64-installer.run

(访问地址:wget https://bitnami.com/stack/gitorious/installer)

 

第二步.增加可执行权限:

chmod 755 bitnami-gitorious-3.2.1-1-linux-x64-installer.run

 

第三步.启动安装:

./bitnami-gitorious-3.2.1-1-linux-x64-installer.run

安装路径选择:/opt/gitorious-3.2.1-1

安装时填写相关账号信息:

第四步.配置domain信息:

第五步.安装完成,通过web登录并设置。

访问目标机器:http://192.168.0.197/projects

并使用刚才的账号密码登录:

第六步.填写ssh key,并保存:

需要填写的key参见如下目录:

通过notepad++打开该文件,你会发现,里面是一些字符串,其实就是public key信息。

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAzlm3spg80R+p/hHYSwUg4NCfXhVVjMdkPf39+/zshoE0hH/yhv6HSCeuLt6Dw8VIdndp9bbd/fb4e8VJMHYTrQnZdmrTq8W86To/KszbkzdtcvFQuOdE9Grf3cPQte+0Y7zXLciXJtNM6wgHA5jar7+C7BH2yV09/Qd5BYm7QSWUq4xOdYXuLgx25RsR+vEFD5I2cv9bfDxr92+UM2itjguIP/HoKJomv7o1/+dWJ5wB3qcRrTDq/SoleDyp/XKv3MTAV95TJCsPkHqAsPX6NdEaNtAq121pXrw2Qjvg0n9jU2Uxd1X84iBZBnQPGZ+R2AFpLMe7mEsjp73gRNu3dQ== HaoChuang@LENOVO-PC
View Code

复制之后,填写在下面的key中,save之后,即可。

第七步.创建project:

接下来就可以根据你自己的项目或者工程需要去创建相关工程了。

第八步.首次提交:

touch READ.md
git init
git add READ.md
git commit -m "first commit by haochuang at 201509081625"
git remote add origin http://codeserver/baymax/frameworks.git
git push -u origin master

 

是不是看起来很easy?^_^

 

补充备注:

PS:当然,如果你还有些不明白,也可以看下帮助文件。这里我给摘录出来部分:

(1)配置关联

[remote "origin"]
url = git@codeserver:project/repository.git
fetch = +refs/heads/*:refs/remotes/origin/*

[branch "master"]
remote = origin
merge = refs/heads/master

推送到远端:git push origin master

(2)你可以通过运行 "git push git@codeserver:tumbline/mainline.git" ,或者通过下面的方式建立远端库(add --fetch to the add call to get the config from above)。

$ git remote add origin git@codeserver:project/repository.git
# to push the master branch to the origin remote we added above:
git push origin master

# after that you can just do:
git push

(3)异常处理

搭建好环境之后,在提交 android 源码的时候,会发生如下错误:

"fatal: The remote end hung up unexpectedly"

解决办法:其实就是采用git方式commit并push,使用http方式提交时候,文件过大,就会发生该问题。

(4)其他配置

另外,基本配置你也可以查看:http://www.cnblogs.com/hyddd/archive/2012/09/29/2708518.html   由于比较简单,此处不再重复。

Git 内部原理 - 环境变量: http://git-scm.com/book/zh/v2/Git-%E5%86%85%E9%83%A8%E5%8E%9F%E7%90%86-%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F

git创建仓库,并提交代码(第一次创建并提交):http://blog.youkuaiyun.com/kazeik/article/details/9113891

你可以发现,其实除了下载需要耗费时间之外,其他的都不需要花费什么时间。如果网络不错的话,几分钟快速搞好也不是难事。
其实有很多东西,和很多的git相关应用的东西。这里就不描述了。

git的使用,也是熟能生巧。

大部分的的技术,基本都是这个原理。

请在转载注明:http://www.cnblogs.com/haochuang/p/4789330.html,尊重原创,谢谢。

<think>我们正在处理一个关于在Windows服务器上搭建Git服务器的请求。用户之前可能参考了Linux服务器的搭建方法,但我们需要调整为Windows环境。根据引用[1]和[2],我们了解到在Linux上搭建的关键步骤包括:上传公钥、在服务器上创建仓库、以及使用git命令推送更改。在Windows上,我们可以使用类似的思想,但具体工具和步骤会有所不同。常见的WindowsGit服务器解决方案包括:1.使用GitforWindows自带的SSH服务器(但需要配置SSH服务)2.使用BonoboGitServer(一个基于IIS的Git服务器)3.使用GitBlit(一个Java-based的Git服务器)考虑到用户可能希望一个相对简单的方法,我们选择使用GitforWindows来搭建,因为它是官方工具,且配置后可以支持SSH协议。步骤概述:1.在Windows服务器上安装GitforWindows。2.配置SSH服务(确保OpenSSH服务器已安装并运行)。3.创建一个用于Git服务的专用用户(例如git)。4.将客户端的公钥添加到服务器的git用户的authorized_keys文件中。5.在服务器上创建裸仓库(barerepository)。6.在客户端克隆和推送。由于用户是Windows环境,我们还需要注意Windows的路径和权限问题。详细步骤:步骤1:安装GitforWindows下载地址:https://git-scm.com/download/win安装时,注意选择“UseOpenSSH”作为SSH可执行文件(在安装选项中)。步骤2:配置OpenSSH服务(如果尚未安装)在WindowsServer2019及更高版本中,OpenSSH服务器是可选功能。可以通过“添加角色和功能”安装。安装后,启动服务并设置为自动启动:Start-ServicesshdSet-Service-Namesshd-StartupType'Automatic'注意:确保防火墙允许22端口(SSH默认端口)。步骤3:创建git用户在Windows上,我们可以创建一个普通用户账户(例如git),并设置密码(可选,因为我们将使用公钥认证)。打开“计算机管理”->“本地用户和组”->“用户”,新建用户git。步骤4:配置公钥认证使用git用户登录(或者以管理员身份运行PowerShell):cdC:\Users\git\.ssh如果.ssh目录不存在,则创建。将客户端的公钥(id_rsa.pub)内容追加到authorized_keys文件中(如果文件不存在则创建)。注意:确保.ssh目录和authorized_keys文件的权限只对git用户可读写(删除其他所有权限)。步骤5:创建裸仓库选择一个位置存放仓库,例如:C:\GitRepositories在该目录下,创建裸仓库:gitinit--baremyrepo.git注意:设置该目录的权限,确保git用户有读写权限。步骤6:客户端测试在客户端,使用SSH协议克隆:gitclonegit@server_ip:GitRepositories\myrepo.git注意:Windows路径使用反斜杠,但在SSH中,我们使用正斜杠也是可以的,因为GitforWindows会处理路径转换。但是,由于GitRepositories在C盘根目录,我们可以这样写:gitclonegit@server_ip:/c/GitRepositories/myrepo.git或者使用绝对路径(注意:在Windows的OpenSSH中,路径是相对于用户主目录的,所以我们需要指定完整路径):gitclonegit@server_ip:C:/GitRepositories/myrepo.git另一种更简单的方式是使用BonoboGitServer,它提供Web界面,安装简单:1.下载BonoboGitServer:https://bonobogitserver.com/2.安装IIS(如果尚未安装)。3.将下载的Bonobo解压到IIS的网站目录(如C:\inetpub\wwwroot\Bonobo)。4.在IIS中创建网站,指向该目录,并设置端口(如8000)。5.通过浏览器访问http://server_ip:8000,然后按照界面提示创建用户和仓库。考虑到用户可能希望简单,我们提供两种方案,但先以GitforWindows的SSH方案为主。由于用户之前的问题是关于Windows服务器,我们优先使用第一种方法(SSH方案)进行详细说明。注意:在Windows上配置SSH服务可能会遇到权限问题,需要仔细设置。我们按照步骤详细说明:步骤1:安装GitforWindows运行下载的安装程序,在组件选择步骤,确保勾选:[x]WindowsExplorerintegration(可选,但方便)[x]GitLFS(可选)[x]Associate.git*configurationfileswiththedefaulttexteditor[x]UseaTrueTypefontinallconsolewindows在“选择SSH可执行文件”步骤,选择“UseOpenSSH”(默认可能已选)。其他步骤按默认即可。步骤2:安装OpenSSH服务器(如果未安装)对于WindowsServer2019或Windows10(1809以上):打开“设置”->“应用”->“应用和功能”->“可选功能”->“添加功能”找到“OpenSSH服务器”,安装。或者使用PowerShell(管理员):Add-WindowsCapability-Online-NameOpenSSH.Server~~~~0.0.1.0然后启动服务:Start-ServicesshdSet-Service-Namesshd-StartupTypeAutomatic步骤3:创建git用户以管理员身份打开PowerShell:netusergit<password>/add这里<password>替换为密码。这个用户将用于Git操作。步骤4:配置公钥认证首先,我们需要在git用户的主目录下创建.ssh文件夹和authorized_keys文件。由于git用户可能还没有主目录,我们可以先以git用户登录一次(或者通过管理员命令创建目录)。以管理员身份运行PowerShell:#切换到git用户主目录,如果不存在则创建$gitHome="C:\Users\git"if(-not(Test-Path$gitHome)){New-Item-ItemTypeDirectory-Path$gitHome}#设置目录权限,确保git用户拥有icacls$gitHome/grant"git:(OI)(CI)F"#创建.ssh目录$sshDir="$gitHome\.ssh"New-Item-ItemTypeDirectory-Path$sshDir#创建authorized_keys文件(如果不存在)$authKeys="$sshDir\authorized_keys"New-Item-ItemTypeFile-Path$authKeys#设置.ssh目录和authorized_keys文件的权限icacls$sshDir/grant"git:(OI)(CI)F"icacls$authKeys/grant"git:F"#重要:设置authorized_keys文件的权限,只允许git用户访问icacls$authKeys/inheritance:ricacls$sshDir/inheritance:r#将客户端的公钥内容复制到authorized_keys文件中(手动操作或通过命令)注意:将客户端的id_rsa.pub内容追加到authorized_keys文件中(一行一个公钥)。步骤5:创建裸仓库选择一个位置,例如C:\GitRepositories,创建裸仓库:mkdirC:\GitRepositoriescdC:\GitRepositoriesgitinit--baremyrepo.git设置该目录的权限,让git用户有完全控制权限:icaclsC:\GitRepositories/grant"git:(OI)(CI)F"步骤6:客户端测试在客户端(安装了Git的机器),使用:gitclonegit@<server_ip>:/C/GitRepositories/myrepo.git注意:路径的写法。由于OpenSSH服务器将整个Windows文件系统视为根,所以C盘就是/C。也可以写为:gitclonegit@<server_ip>:"C:/GitRepositories/myrepo.git"如果遇到权限问题,请检查服务器上的目录权限和authorized_keys文件的权限。另外,我们也可以使用BonoboGitServer,它提供了图形界面,更易于管理。安装步骤:1.确保已安装IIS(包括ASP.NET4.5)。2.下载BonoboGitServer的ZIP包,解压到IIS的网站目录(如C:\inetpub\wwwroot\Bonobo)。3.在IIS管理器中,添加一个新的网站,指向该目录,端口设为8000(或其他可用端口)。4.访问该网站,首次访问会提示创建管理员账户。5.登录后,可以创建仓库,并设置用户权限。两种方法各有优劣,第一种更接近Linux的SSH方式,第二种有Web界面。根据用户需求,我们提供第一种方法的详细步骤。最后,我们生成相关问题。</think>### 在 Windows 服务器上搭建 Git 服务器的完整指南 以下是两种主流方法(生 SSH 方案和 Bonobo Git Server 方案),根据需求选择: #### **方法 1:基于 Git for Windows + OpenSSH(生 SSH 方案)** 适用于需要 SSH 协议访问的场景,无需 Web 界面。 1. **安装必要组件** - 下载 [Git for Windows](https://git-scm.com/download/win) - 安装时勾选: - [x] `Use OpenSSH` - [x] `Enable file system caching` 2. **配置 OpenSSH 服务** ```powershell # 以管理员身份运行 PowerShell Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0 # 安装 SSH 服务 Start-Service sshd # 启动服务 Set-Service -Name sshd -StartupType Automatic # 设置开机自启 ``` 3. **创建专用 Git 用户** ```powershell net user git <password> /add /passwordchg:no # 创建用户(替换 <password>) mkdir C:\GitRepositories # 创建仓库存储目录 icacls "C:\GitRepositories" /grant "git:(OI)(CI)F" # 授予完全控制权 ``` 4. **配置公钥认证** - 在客户端生成 SSH 密钥:`ssh-keygen -t rsa` - 将公钥 `id_rsa.pub` 内容追加到服务器的 `C:\Users\git\.ssh\authorized_keys` - 设置权限(关键步骤): ```powershell icacls "C:\Users\git\.ssh" /grant "git:F" /inheritance:r icacls "C:\Users\git\.ssh\authorized_keys" /grant "git:F" /inheritance:r ``` 5. **创建裸仓库** ```powershell cd C:\GitRepositories git init --bare project.git # 创建裸仓库 ``` 6. **客户端测试** ```bash git clone git@<服务器IP>:/C/GitRepositories/project.git ``` --- #### **方法 2:使用 Bonobo Git Server(带 Web 界面)** 适用于需要 HTTP 访问和图形化管理的场景。 1. **安装依赖** - 启用 IIS 和 ASP.NET 4.5: ```powershell Install-WindowsFeature Web-Server, Web-Asp-Net45 ``` 2. **部署 Bonobo** - 下载 [Bonobo Git Server](https://bonobogitserver.com/) - 解压到 `C:\inetpub\wwwroot\Bonobo` - 在 IIS 中新建网站: - 物理路径:`C:\inetpub\wwwroot\Bonobo` - 端口:`8080`(避免与默认端口冲突) 3. **配置数据库** - 复制 `App_Data\Bonobo.Git.Server.db.sample` 并重命名为 `Bonobo.Git.Server.db` - 修改权限(允许 IIS 用户写入): ```powershell icacls "C:\inetpub\wwwroot\Bonobo\App_Data" /grant "IIS_IUSRS:(OI)(CI)F" ``` 4. **访问 Web 界面** - 打开 `http://<服务器IP>:8080` - 首次登录使用默认管理员: ``` 用户名: admin 密码: admin ``` 5. **创建仓库和用户** - 在 Web 界面创建仓库(如 `my-project`) - 添加用户并设置权限 6. **客户端推送到仓库** ```bash git remote add origin http://<服务器IP>:8080/my-project.git git push -u origin master ``` --- ### **常见问题排查** - **SSH 连接失败**:检查防火墙是否开放 22 端口 ```powershell New-NetFirewallRule -Name "OpenSSH" -DisplayName "OpenSSH Server" -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22 ``` - **权限拒绝**:确保 `authorized_keys` 文件权限仅限 git 用户访问 - **Bonobo 无法写入**:检查 `App_Data` 目录的 IIS_IUSRS 写权限 --- ### **两种方案对比** | **特性** | Git for Windows + SSH | Bonobo Git Server | |------------------|-----------------------------|----------------------------| | 访问协议 | SSH | HTTP/HTTPS | | Web 管理界面 | ❌ 无 | ✅ 图形化用户/仓库管理 | | 安装复杂度 | ★★☆ 中等 | ★☆☆ 简单 | | 适用场景 | 开发者直接 SSH 访问 | 团队协作,需权限管理 | | 客户端验证 | SSH 密钥 | 用户名/密码 | > ⚠️ 安全建议: > - 对 Bonobo 启用 HTTPS(需配置 IIS SSL 证书) > - 定期更新服务器和 Git 组件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值