欢迎访问www.showerlee.com, 您的支持就是我前进的动力.

Windows下TortoiseGit over Putty or Openssh提交项目到GitLab

showerlee 2014-08-30 13:45 Git 阅读 (35,218) 1条评论

Gitlab默认的配置推荐使用shell命令行与server端进行交互,作为搞SCM的表示无压力,但是作为开发人员还是比较适应windows的GUI图形管理,方便他们将注意力集中到代码编写上,所以今天刚好接着昨天给大家介绍一下使用windows下的git client工具实现将本地代码提交到远程服务器.

解决方案:

环境部署

操作系统                 Windows7 x64 Sp1

TortoiseGit             TortoiseGit-1.8.11.0-64bit.msi

Git                          Git-1.9.4-preview20140815.exe

Putty                      PuTTY 0.63

OpenSSH                owned by Git 

下载地址:  http://yunpan.cn/QaaLGsd23BsWL (访问密码 96d7)

注: 此处下载地址中的安装包都为64位版本,32位请另行下载.

一.部署前的准备工作

安装TortoiseGit,Git,Putty,默认下一步安装即可,其中Git为Git client环境安装包,确保windows包含git环境.

二.配置PuTTY authentication agent

在安装TortoiseGit后,可以选择使用OpenSSH客户端还是使用Putty客户端,如果使用的是默认的Putty客户端,由于TortoiseGit GUI连接不支持server端自定义端口配置,若GitLab使用的SSH端口为自定义端口,则需要使用PuTTY的authentication agent去做一个本地的端口转发.

1.首先使用TortoiseGit自带的Puttygen创建本地的公/私钥对

1

2

2.点击Generate按钮,在窗口空白处按照提示晃动鼠标,生成公/私钥对,并保存到本地

其中testkey为公钥,testkey.ppk为私钥

3

4

3.将窗口生成的Public key粘贴到GitLab站点具体使用账号的SSh Keys内即完成公钥上传.

23

5


4.使用PuTTY连接gitlab服务器,open之前需选择之前本地生成的私钥

这里服务端domain为git.example.com

git为Server端SSH For GitLab账户

SSH端口为自定义的2222

7 8 


5.连接成功会在右下角任务栏出现任务图标

  9


三.配置TortoiseGit

1.从windows开始菜单选择TortoiseGit-Setting工具,在对话框里选择Git项,填写相关info

注: 这里的User Info中Name建议与你的Gitlab的账户名保持一致,且该账户必须有该project的相关git操作权限,如果没有可能会造成GIT相关操作报permisson deny错误.当然如果你Gitlab本身刚搭建好,只有系统初始的admin账户,未添加其他账户,则这个权限问题会被系统忽略.

当然另外一种可能是:

大多数国内文档这里未提及这点可能在于国人的windows系统99.9%都是Ghost版本,初始都为admin最高权限,所以这边权限问题直接忽略,但如果你的windows系统是家庭版,或者未使用系统最高权限登陆,则会出现上述报错情况,这个问题也是在我一个朋友那边发现的,他的机子是Surface的Win8家庭版,一般都是普通用户登录,So让我倒持了大半天,终于发现了问题所在...

如果有git相关管理经验的朋友,这里可以解释一下.

10

2.在D盘新建一个目录,例如"D:\Git",并进入目录右键目录空白处选择"Git Create repository here...",弹出对话框点确认,这样即建立了一个本地Git仓库.

11 12


3.在该仓库目录下创建一个测试项目文本文件,右键目录空白处,选择Git Commit -> "master" ...,在弹出对话框里输入提示注释,选择要加入的版本控制文件,确定即可提交.

18
13

4.现在只是在本地实现使用Git管理项目,在此界面若显示Success则本地提交成功,接下来点击Push..,把我们的改动递交到Git服务器上.
14

5.此时会弹出Push对话框,在Ref - Remote栏里设定当前分支名为master,然后点击Destination - Remote栏的Manage按钮.
15

6.在弹出的设置对话框中按照如图所示,填写服务器Remote名称,URL(git@git.yanwenbo.cn:root/tesproject.git),之前保存的本地私钥testkey.ppk,点击Add New/Save按钮保存这一设置,然后点击确定退出返回之前的对话框.

10


7.最终确认提交

17


8.push成功

20


9. Giblab后台查看提交结果.

21 22


大功告成...



后记...

之前介绍的是利用TortoiseGit配合putty实现SSH自定义端口的连接GitLab

但是在给一个朋友配的过程中发现他的SURFACE WIN8系统死活无法PUSH成功,但我的win7同样方法就没问题,索性就用OPENSSH的命令行方法实现.

具体过程这里较之前的稍作更改

1. 利用git bash创建秘钥,方法和linux命令行创建秘钥命令行格式基本一致

1

2

a.客户端生成秘钥

# cd ~

# ssh-keygen -t rsa

一路回车后生成公钥和秘钥对

# cat ~/.ssh/id_rsa.pub 

—————————————————————————————————————————————————

将这里生成的秘钥全部复制并粘贴到gitlab web SSH Keys后台保存即可

—————————————————————————————————————————————————

上传后如图:

QQ20140829-9@2x

b.测试SSH连接

# ssh -p22 git@git.example.com

若报如下错误:

——————————————————————————————————————

PTY allocation request failed on channel 1

/usr/bin/env: ruby: No such file or directory

Connection to git.example.com closed.

——————————————————————————————————————

说明服务端ruby环境变量未在此目录/usr/bin/ruby

在服务器端加此软链即可:

# ln -s /usr/local/ruby/bin/ruby /usr/bin/ruby

注:若服务器端SSH自定义端口,则需要在客户端~/.ssh/config下添加端口配置

假定自定义SSH端口为2222

# echo “Port 2222” >> ~/.ssh/config

c.重新连接

# ssh -p22 git@git.example.com

——————————————————————————————————————

PTY allocation request failed on channel 1

Welcome to GitLab, Anonymous!

Connection to git.example.com closed.

——————————————————————————————————————

3

2.将TortoiseGit默认的SSH客户端TortoiseGitPlink(Putty)更改为openssh,具体路径与你的实际安装路径为准.

4 5 6

3.更改TortoiseGit的秘钥import路径为Git bash命令行生成的秘钥路径

将之前到此处的配置中如下PuttyGen生成的秘钥路径更改成你的openssh生成的秘钥 

笔者是windows管理员账户登录

所以路径为 C:\Users\Administrator\.ssh\id_rsa 

10

9

4.其他配置保持不变,按照上文操作即可完成openssh认证远程Git over SSH for Gitlab.

正文部分到此结束
版权声明:除非注明,本文由(showerlee)原创,转载请保留文章出处!
本文链接:http://www.showerlee.com/archives/1300

继续浏览:Git

目前有1条大神的评论

loading

发表评论

icon_wink.gif icon_neutral.gif icon_mad.gif icon_twisted.gif icon_smile.gif icon_eek.gif icon_sad.gif icon_rolleyes.gif icon_razz.gif icon_redface.gif icon_surprised.gif icon_mrgreen.gif icon_lol.gif icon_idea.gif icon_biggrin.gif icon_evil.gif icon_cry.gif icon_cool.gif icon_arrow.gif icon_confused.gif icon_question.gif icon_exclaim.gif