最近自己配置了一下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. RtlAdjustPrivilege进程提权,权限ID对照表

    SeCreateTokenPrivilege            0x2 SeAssignPrimaryTokenPrivilege     0x3 SeLockMemoryPrivilege    ...

  2. 如何在 Xcode 中进行 Qt 开发(可使用使用 Homebrew 来安装qt)

    第一步 安装 Qt 分为两种情况: 1. 希望使用 Qt Quick 等先进Qt5技术, 2. 只需要 Qt 4.8的类库即可. 第一种, 直接去官网下载 Mac安装包, 在此不作过多说明, 开发时也 ...

  3. 知识的内化:学习、实践、输出(与Focus Feedback FixIt的原理是一致的)

    一个人的能力分三个层次: 资源,比如知识.技能.经验.时间.精力.金钱.人脉等 应用流程,即使用资源解决问题的能力,包括做事的方法.流程.策略等,它是你整合应用资源创造价值的能力. 价值取向,即你觉得 ...

  4. python的实用函数

    >>> file=open('txt.txt','a') >>> print >> file,'hello,world' >>> fi ...

  5. Spring Boot的学习之路(02):和你一起阅读Spring Boot官网

    官网是我们学习的第一手资料,我们不能忽视它.却往往因为是英文版的,我们选择了逃避它,打开了又关闭. 我们平常开发学习中,很少去官网上看.也许学完以后,我们连官网长什么样子,都不是很清楚.所以,我们在开 ...

  6. hgoi#20190517

    T1-Mike and gcd problem Mike给定一个n个元素的整数序列,A=[a1,a2,...,an],每次操作可以选择一个i(1≤i<n),将a[i],a[i+1]变成a[i]- ...

  7. 关于学习js的Promise的心得体会

    最近一直在研究js的Promise对象,其中有一篇blog写得比较通俗易懂,转发如下: http://www.cnblogs.com/lvdabao/p/es6-promise-1.html 参照上面 ...

  8. 利用Settings.bundle切换网络环境

    目的:一次性打包,测试可以去iPhone设置,找到APP,点击后然后可以自主切换网络环境(测试.预生产.正式).关闭APP重新打开生效. 撸起袖子加油干…… 1.生成并设置Setting.bundle ...

  9. chmod命令用法详解-chmod修改目录权限

    chmod用法: 用来修改某个目录或文件的访问权限.  语法: chmod [-cfvR] [--help] [--version] [who] [+ | - | =] [mode] 文件名 例子: ...

  10. HashMap原理(一) 概念和底层架构

    HashMap在Java开发中使用的非常频繁,可以说仅次于String,可以和ArrayList并驾齐驱,准备用几个章节来梳理一下HashMap.我们还是从定义一个HashMap开始. HashMap ...