最近自己配置了一下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客户端 虚拟机的更多相关文章

  1. 配置 Ubuntu 服务器

    Python: apt install python3-pip sudo add-apt-repository ppa:fkrull/deadsnakes sudo apt-get update ap ...

  2. go git 安装配置与使用 (windows 7 64bit)

    go语言安装使用第三方库方式一般采用 go get github.com/.../...  命令.例如: go get github.com/astaxie/beego 1.错误情况一: packag ...

  3. Ubuntu 18.04 LTS上安装NFS服务器和客户端

    NFS是基于UDP/IP协议的应用,其实现主要是采用远程过程调用RPC机制,RPC提供了一组与机器.操作系统以及低层传送协议无关的存取远程文件的操作.RPC采用了XDR的支持.XDR是一种与机器无关的 ...

  4. 在 CentOS8/RHEL8 中配置 Rsyslog 服务器

    Rsyslog 是一个自由开源的日志记录程序,在 CentOS 8 和 RHEL 8 系统上默认可用.它提供了一种从客户端节点到单个中央服务器的"集中日志"的简单有效的方法.日志集 ...

  5. [转载]Ubuntu安装配置 git 服务器和客户端

    原文地址:Ubuntu安装配置 git 服务器和客户端作者:ding404 1.配置前准备 服务器:安装ssh server另外还装了gitosis做git的权限管理 sudo apt-get ins ...

  6. Windows操作系统下搭建Git服务器和客户端。

    本文将介绍如何在Windows操作系统下搭建Git服务器和客户端.服务器端采用的是Bonobo Git Server,一款用ASP.NET MVC开发的Git源代码管理工具,界面简洁,基于Web方式配 ...

  7. Centos6架设GIT服务,windows客户端使用TortoiseGit加载KEYGEN连接GIT服务器

    前几天得空,想起前一阵学了GIT还没好好实践,就在虚拟机中安装测试了一下,并简单记录了CENTOS6中GIT安装,ssh-keygen生成,客户端使用TortoiseGit加载KEYGEN连接GIT服 ...

  8. 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 ...

  9. Git版本控制之ubuntu搭建Git服务器

    Git是一个开源的分布式版本控制系统,可以有效.高效的处理从很小到非常大的项目版本管理.使得开发者可以通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库,也可以将代码提交到Git服务 ...

随机推荐

  1. FireMonkey下的异形窗体拖动(需要使用FmxHandleToHwnd函数转化一下句柄)

    DelphiXE2 Firemoney FMX 的窗体不只是为windows的, 所以很多功能都没有了. 最常见的就是拖拽了 先看 VCL时代 一个经典拖动代码 ReleaseCapture(); S ...

  2. Google C++测试框架系列入门篇:第二章 开始一个新项目

    上一篇:Google C++测试框架系列入门篇:第一章 介绍:为什么使用GTest? 原始链接:Setting up a New Test Project 词汇表 版本号:v_0.1 开始一个新项目 ...

  3. 深入理解Java虚拟机(字节码执行引擎)

    深入理解Java虚拟机(字节码执行引擎) 本文首发于微信公众号:BaronTalk 执行引擎是 Java 虚拟机最核心的组成部分之一.「虚拟机」是相对于「物理机」的概念,这两种机器都有代码执行的能力, ...

  4. 深入V8引擎-AST(1)

    没办法了,开坑吧,接下来的几篇会讲述JavaScript字符串源码在v8中转换成AST(抽象语法树)的过程. JS代码在V8的解析只有简单的几步,其中第一步就是将源字符串转换为抽象语法树,非常类似于v ...

  5. 精通并发与 Netty (一)如何使用

    精通并发与 Netty Netty 是一个异步的,事件驱动的网络通信框架,用于高性能的基于协议的客户端和服务端的开发. 异步指的是会立即返回,并不知道到底发送过去没有,成功没有,一般都会使用监听器来监 ...

  6. prometheus-operator监控Kubernetes

    Operator Operator是由CoreOS公司开发的,用来扩展 Kubernetes API,特定的应用程序控制器,它用来创建.配置和管理复杂的有状态应用,如数据库.缓存和监控系统.Opera ...

  7. 深度残差网络(ResNet)

    引言 对于传统的深度学习网络应用来说,网络越深,所能学到的东西越多.当然收敛速度也就越慢,训练时间越长,然而深度到了一定程度之后就会发现越往深学习率越低的情况,甚至在一些场景下,网络层数越深反而降低了 ...

  8. 利用jsonconvert来转换json数据格式 (对象转为json)

      今天学了一下.net的WCF组件,边心血来潮,想着现在不都是前后分离,调接口开发不,于是赶紧写了一简单的后台数据,哈哈  废话不多说,直接上代码: 注意需要导入库! 实体类:Customer us ...

  9. MySQL索引的数据结构-B+树介绍

    目录 一.树 二.B+树 2.1 B+树性质 三.聚集索引和辅助索引 3.1 聚集索引 3.2 辅助索引 3.3 聚集索引和非聚集索引的区别 四.再看B+树 4.1 B+树的插入操作 4.2 B+树的 ...

  10. RABC权限控制(页面操作角色,权限和进行分配)

    上一节主要说的是如何通过url进行权限控制,这一节就说一下如何开发一个权限控制的界面,这样我们就能很方便的创建角色,并分配给用户不同角色和不同权限. 1.编写角色管理页面 这个编写较为简单,主要是通过 ...