Git初步配置 ubuntu服务器 windows客户端 虚拟机
最近自己配置了一下Git,虽然网上相关的内容满天飞(ps:大多都差不多,很多都是直接转载,说的也比较乱),但是我还是碰到了很多问题,这里我就把我配置的步骤分享一下,遇到的问题也说一下,新手之间相互学习吧
环境:
ubuntu做服务器,windows做客户端,是在windows上跑的虚拟机,里面运行的Ubuntu
步骤:
1.(在ubuntu系统上)
sudo apt-get install operssh-server openssh-client [这两个软件是用做两个系统间通信用的,如果不安装的话,就连接不上服务器端了]
sudo apt-get install git-core [这个是git]
2.(在ubuntu系统上)
sudo useradd -m git [这个是添加一个用户)]
sudo passwd git [这个是为这个用户设置密码,输入命令,回车,会提示你输入密码,ps:ubuntu输入密码的时候光标是不会做任何相应的反应的,新手可能会认为自己没有输入]
[上面这两步的目的是为了服务器端管理将来的git工程。我们知道linux系统都有一个root用户,也就是最高级的用户,拥有最高权限,由于root用户比较特殊,权限高,在是用中可能会误操作别的用户的内容或系统的一些文件,所以我们linux系统一般都会有一个日常使用的用户,一般不会登陆root用户,日常用户是为了日常操作使用的,所以我们这个地方又创建了一个用户,用户名是git,专门用来处理git相关事务。这样可以更有条理的工作,要是所有的东西都在日常用户或是root用户下,那么工作目录很乱也可能导致一些操作影响到其他的内容]
sudo mkdir /home/git/repositories [这个地方是在刚才我们创建的git的home目录创建一个文件夹,用来保存将来我们的git项目,ps:我们创建一个用户后,系统会在/home/目录下自动创建一个文件夹,那就是这个用户的home目录]
sudo chown git:git /home/git/repositories [这个地方是对刚才创建的文件夹设置它的所有者]
sudo chmod /home/git/repositories [这个地方是设置文件夹的权限,也就是读写执行对于自己所有者的用户,组内的用户,其他用户应该有的权限]
git config --global user.name "myname" [这个地方是向git指定一个用户名,这是因为git要运行,必须要有一个用户名和对应的邮箱,下面是添加邮箱,myname就是你指定的用户名,这个可以随意起]
git config --global user.email myname@gmail.com [这个地方就是指定一个对应的邮箱,随便写一个自己的邮箱就行了]
3.(在ubuntu系统上)
sudo apt-get install python-setuptools [这个地方是安装python,因为接下来我们需要用python进行编译我们的软件]
cd /tmp [这个地方是到临时目录,因为tmp目录下需要的权限比较低,操作方便,一些临时的操作有时候都会在tmp目录下]
git clone https://github.com/res0nat0r/gitosis.git [这个地方是从github网站把gitosis的源码拿下来,gitosis是我们接下来要用的软件]
cd gitosis [执行完上面后,在当前目录下会有一个gitosis文件,就是刚刚下载下来的源码]
sudo python setup.py install [这个地方就是安装gitosis]
4.(在ubuntu系统上)
cd /home/git/repositories [进入到我们刚才创建的仓库目录]
mkdir project.git [创建一个项目的git文件夹,以后项目的代码等东西都会提交到这个文件夹里面,名称一般是以git结尾]
cd project.git [进入到这个文件夹]
git init --bare [这里是初始化这个文件夹成一个git仓库,这是一个空的仓库,里面什么都没有现在,可能会有一些自动生成的配置文件等]
现在我们在ubuntu服务器上安装了必要的软件,也配置好了服务器,下面就是操作客户端,安装相应的软件并配置,令客户端能与服务器连接起来
5.(在windows系统上)
在google搜索“git for windows”,能够找到这个http://msysgit.github.io/,下载并安装。这个是windows上的git客户端
在windows上安装没有太多要说的,有一个地方,安装过程中,有一个“configuring the line ending conversions",这个是配置你的文件是按那种格式换行,我们知道windows下换行是\r\n两个符号表示,linux下是\n一个符号表示,所以在windows和linux间传递数据会有这个问题。程序默认的可能是”checkout windows-style, commit unix-stye line endings",表示程序会做一些自动转换,我们选“checkout
as-is, commit as-is",就是不做任何变化。
6.(在windows系统上)
我们可以在系统的任意地方右击,选择“Git Bash“,然后就会打开一个终端,这个时候我们可以用ssh连接一下ubuntu,看看能不能连得上。
ssh git@192.168.1.1 [这个地方git就是ubunt系统上的git用户,后面的ip就是ubuntu系统的ip,你需要ubuntu系统运行着,并且查看其具体ip,这里就表示我们以git的身份登录ubuntu系统]
如果成功,会提示你输入密码,输入后,就可以登录到服务器了,这就表示可以正常连接。
但是在windows下,登录虚拟机(我用的是vmware)下的ubuntu可能需要一些配置
VMware网络设置采用的NAT方式
Virtual Network Editor->选择NAT->NAT Setting->PortForwarding->Add
Host Port: 22
Virtual Machine IP address:192.168.100.100(IP可以在虚拟机内查到记录下来,表示你要映射到哪个IP)
Virtualmachine port 22
可能遇到的问题
ssh: connect to host github.com port 22: Bad file number
有这么几个问题会导致这个错误
a.Ubuntu服务器可能没有安装ssh-server或是没有启动服务
在Ubuntu上运行ssh127.0.0.1如果出现
connectto host localhost port 22:Connection refused,那就表示没安装或是没启动。
运行 ps –e| grep ssh,查看是否有sshd的进程。如果没有那么就是server没有启动。
运行/etc/init.d/ssh –start进行启动server进程。如果提示没有ssh。那么就是没有安装server
运行apt-get install openssh-server进行安装
b.Windows的22端口没有开启。在防火墙内开启或是关闭防火墙
c.Linux的22端口没有开启。在linux下开启或是关闭防火墙
一般情况下是第一个原因导致的,就是你在ubuntu系统上没有安装ssh和其相关服务,或是没开启ssh服务。因为默认ubuntu是不安装ssh的
如果连接服务器成功的话,那就开始生成你的当前系统的密钥吧。密钥的作用就是服务器端用来判断和区分各个客户端的一个凭证,它是根据你的系统生成的一个独一无二的一串字符,你把保存这个字符的文件发送到服务器端,git就可以根据这个来判断是那个客户端在提交代码或是下载代码,这个客户端有没有权限做这些操作,没有的话就不提供相应的功能。其实也就是你电脑的一个id
生成密钥还是在你打开的Git Bash,运行命令
ssh-keygen -t rsa
然后回车,系统会做一些提示,全部回车同意就行,最后会生成一个保存密钥的文件,看一下生成保存的位置。在windows上一般位置是保存在c:/Users/(你当前用户名)/.ssh目录下,有一个id_rsa(私人密钥,保存好) 和 id_rsa.pub(公共密钥,要发送给服务器,用来辨别你的身份)。你可以打开看一下这两个文件,里面就是一堆字符。把id_rsa.pub拷贝到服务器上。
7.(在ubuntu系统上)
sudo -H -u git gitosis-init < id_dsa.pub [这个地方就是用刚才在windows上生成的密钥对gitosis初始化,也可以不加后面的pub,需要自己手动设置,另外再讲]
sudo chmod /home/git/repositories/gitosis-admin.git/hooks/post-update [这个地方就是更改我们原来创建仓库的文件夹下面,由于上面的初始化,会产生一个gitosis-admin的文件夹,把里面的hooks/post-update文件夹属性改一下]
8.(在windows系统上)
我们找到一个文件夹,在里面右击,选择“git bash”,然后运行
git clone git@192.168.100.100:/home/git/repositories/gitosis-admin.git [这个里面git clone是git的命令,用来从服务器上把一个工程完全的拷贝下来。后面是表示通过git用户从ip为192.168.100.100服务器的/home/git/repositories/目录下,把gitosis-admin.git拷贝下来]
上面是把安装gitosis时的系统默认的一个用来管理其它git的工程clone了下来,你同样可以把后面的工程名字换一下把刚才创建的project.git项目clone下来了
Git初步配置 ubuntu服务器 windows客户端 虚拟机的更多相关文章
- 配置 Ubuntu 服务器
Python: apt install python3-pip sudo add-apt-repository ppa:fkrull/deadsnakes sudo apt-get update ap ...
- go git 安装配置与使用 (windows 7 64bit)
go语言安装使用第三方库方式一般采用 go get github.com/.../... 命令.例如: go get github.com/astaxie/beego 1.错误情况一: packag ...
- Ubuntu 18.04 LTS上安装NFS服务器和客户端
NFS是基于UDP/IP协议的应用,其实现主要是采用远程过程调用RPC机制,RPC提供了一组与机器.操作系统以及低层传送协议无关的存取远程文件的操作.RPC采用了XDR的支持.XDR是一种与机器无关的 ...
- 在 CentOS8/RHEL8 中配置 Rsyslog 服务器
Rsyslog 是一个自由开源的日志记录程序,在 CentOS 8 和 RHEL 8 系统上默认可用.它提供了一种从客户端节点到单个中央服务器的"集中日志"的简单有效的方法.日志集 ...
- [转载]Ubuntu安装配置 git 服务器和客户端
原文地址:Ubuntu安装配置 git 服务器和客户端作者:ding404 1.配置前准备 服务器:安装ssh server另外还装了gitosis做git的权限管理 sudo apt-get ins ...
- Windows操作系统下搭建Git服务器和客户端。
本文将介绍如何在Windows操作系统下搭建Git服务器和客户端.服务器端采用的是Bonobo Git Server,一款用ASP.NET MVC开发的Git源代码管理工具,界面简洁,基于Web方式配 ...
- Centos6架设GIT服务,windows客户端使用TortoiseGit加载KEYGEN连接GIT服务器
前几天得空,想起前一阵学了GIT还没好好实践,就在虚拟机中安装测试了一下,并简单记录了CENTOS6中GIT安装,ssh-keygen生成,客户端使用TortoiseGit加载KEYGEN连接GIT服 ...
- centos6.5环境搭建openvp服务器及windows客户端搭建及配置详解
1.环境搭建 说明: vpn client 192.168.8.16/24 openvpn server: eth0: 192.168.8.41 eth1: 172.16.1.10 app serve ...
- Git版本控制之ubuntu搭建Git服务器
Git是一个开源的分布式版本控制系统,可以有效.高效的处理从很小到非常大的项目版本管理.使得开发者可以通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库,也可以将代码提交到Git服务 ...
随机推荐
- qt在windows下的udp通信(最简单)
qt编程:windows下的udp通信 本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 环境: 主机:win7 开发环境:qt 功能: 用udp进行收发 ...
- [迟到的万圣节向]可怕的python
什么?python简单易懂好学可读性高灵活耐用扩展好? 预测下面几个小段落的输出,来看看这个能过几关? ============================ Stage 1 预测下列输出 def ...
- tortoisegit密码找回之抓包法
因为一直用tortoisegit记住密码(此方法只适用于tortoisegit有记住密码),昨天需要登陆gitlab发现密码忘记了,用了N个常用默认密码都不对:和度娘交流一会儿也无果,gitlab里的 ...
- 八大排序算法 JAVA实现 亲自测试 可用!
今天很高兴 终于系统的实现了八大排序算法!不说了 直接上代码 !代码都是自己敲的, 亲测可用没有问题! 另:说一下什么是八大排序算法: 插入排序 希尔排序 选择排序 堆排序 冒泡排序 快速排序 归并排 ...
- Python连载16-reduce函数&filter函数
一.reduce函数 本函数释义: (1)原意是归并,缩减 (2)把一个可迭代的对象最后归并成一个结果 (3)对于作为参数的函数要求:必须由两个参数,必须返回一个结果 import functools ...
- SSM(四)Mybatis延迟加载
1.概念 MyBatis中的延迟加载,也称为懒加载,是指在进行关联查询时,按照设置延迟加载规则推迟对关联对象的select查询.延迟加载可以有效的减少数据库压力. 2.关联对象的加载时机 ①.直接加载 ...
- 每日一问:谈谈 SharedPreferences 的 apply() 和 commit()
SharedPreferences 应该是任何一名 Android 初学者都知道的存储类了,它轻量,适合用于保存软件配置等参数.以键值对的 XML 文件形式存储在本地,程序卸载后也会一并清除,不会残留 ...
- 机器学习读书笔记(一)k-近邻算法
一.机器学习是什么 机器学习的英文名称叫Machine Learning,简称ML,该领域主要研究的是如何使计算机能够模拟人类的学习行为从而获得新的知识和技能,并且重新组织已学习到的知识和和技能,使之 ...
- asp.net core系列 67 Web压力测试工具WCAT
一.介绍 最近搭建了一套CQRS框架,需要在投入开发前,进行必要的压力测试.Web Capacity Analysis Tool (Wcat)是一种轻量级HTTP负载生成工具,主要用于衡量受控环境中 ...
- 【POJ - 1426】Find The Multiple(dfs)
-->Find The Multiple 原文是英语,直接上中文了 Descriptions: 给定一个正整数n,请编写一个程序来寻找n的一个非零的倍数m,这个m应当在十进制表示时每一位上只包含 ...