ubuntu下面的git服务器搭建

1、安装相应的软件和依赖


ubuntu:~$ sudo apt-get install git-core openssh-server openssh-client
git-core是git版本控制核心软件安装openssh-server和openssh-client是由于git需要通过ssh协议来在服务器与客户端之间传输文件然后中间有个确认操作,输入Y后等待系统自动从镜像服务器中下载软件安装,安装完后会回到用户当前目录。如果安装提示失败,可能是因为系统软件库的索引文件太旧了,先更新一下就可以了,更新命令如下:ubuntu:~$ sudo apt-get update更新完软件库索引后继续执行上面的安装命令即可。

2、配置服务器

在服务器端

查看ssh有没有启动

root@weiqifa-Inspiron-3847:/home/git# ps -e|grep ssh1686 ?        00:00:00 sshd
root@weiqifa-Inspiron-3847:/home/git# 

创建git用户,用来管理代码的用户

root@weiqifa-Inspiron-3847:/home/git# sudo useradd git
useradd: user 'git' already exists
root@weiqifa-Inspiron-3847:/home/git# 

秘钥文件

在gitServer上我们首先查看/home/git/.ssh目录下是否存在authorized_kesys文件,

如果没有,可以通过touch authorized_keys创建此文件。


在客户机端

在客户端用ssh-keygen -t rsa 生成秘钥

然后用命令scp把秘钥复制到服务器

scp id_rsa.pub weiqifa@192.168.0.88:/home/git/.ssh/

然后回到服务器

root@weiqifa-Inspiron-3847:/home/git/.ssh# ls
authorized_keys  id_rsa.pub
root@weiqifa-Inspiron-3847:/home/git/.ssh# cat id_rsa.pub >> authorized_keys 
root@weiqifa-Inspiron-3847:/home/git/.ssh# cat authorized_keys 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDkIt2Hh532FoWoj0IUztIYF+jz4F1KvyOAmrhpxUMnnuj+YEOhyw6AGL/NAjmE5r8SzeJLTtAkVk9s143R9tYouPOgHPuwTTFvDy/skjD14yMne1aHzre2rM0jGiv5gtZDmi523FvQob7oTM5xOKKk3lsMBQNPdWrPPWqs8kS941sdWYymNQqFLBH4DpzDUAS+Itk5U6aNvVcQbldmGR+F3IxIKxH76HwpTmh+Os5fqraQLOMpWZzu8h0KMMMnNdideV0lHfq40Swb0ZO6ZGy/tdXBTc7oO8bn11oRVQ+Uf+USYMBzB6PCe6gODI3Fp0cBFzzQNque6MIAh6ELClUn Administrator@JU674J315CAOGPV
root@weiqifa-Inspiron-3847:/home/git/.ssh# 


3、建立仓库并克隆
建立个文件夹用来管理仓库

root@weiqifa-Inspiron-3847:/home/git# mkdir repo
root@weiqifa-Inspiron-3847:/home/git# chown -R git:git repo/
root@weiqifa-Inspiron-3847:/home/git# chmod 700 repo/
root@weiqifa-Inspiron-3847:/home/git# 

在服务器测试clone一下

root@weiqifa-Inspiron-3847:/home/git# cd repo/
root@weiqifa-Inspiron-3847:/home/git/repo# git init --bare sscom.git
Initialized empty Git repository in /home/git/repo/sscom.git/
root@weiqifa-Inspiron-3847:/home/git/repo# cd ../
root@weiqifa-Inspiron-3847:/home/git# ls
bin  examples.desktop  gitosis  id_rsa.pub  repo
root@weiqifa-Inspiron-3847:/home/git# cd ../
root@weiqifa-Inspiron-3847:/home# git clone --bare git
git/           gitrepository/ 
root@weiqifa-Inspiron-3847:/home# git clone --bare git/repo/sscom.git/
Cloning into bare repository 'sscom.git'...
warning: You appear to have cloned an empty repository.
done.
root@weiqifa-Inspiron-3847:/home# ls
git  gitrepository  lost+found  sscom.git  weiqifa
root@weiqifa-Inspiron-3847:/home# 



在客户端clone一下

Administrator@JU674J315CAOGPV MINGW64 ~/.ssh
$ git clone git@192.168.0.88:/home/git/repo/sscom.git
Cloning into 'sscom'...
git@192.168.0.88's password:
warning: You appear to have cloned an empty repository.
Checking connectivity... done.

在客户端push 一下

Administrator@JU674J315CAOGPV MINGW64 ~/.ssh
$ git clone git@192.168.0.88:/home/git/repo/sscom.git
Cloning into 'sscom'...
git@192.168.0.88's password:
warning: You appear to have cloned an empty repository.
Checking connectivity... done.Administrator@JU674J315CAOGPV MINGW64 ~/.ssh
$ ls
id_rsa  id_rsa.pub  known_hosts  sample/  sscom/Administrator@JU674J315CAOGPV MINGW64 ~/.ssh
$ cd sscom/Administrator@JU674J315CAOGPV MINGW64 ~/.ssh/sscom (master)
$ ^CAdministrator@JU674J315CAOGPV MINGW64 ~/.ssh/sscom (master)
$ lsAdministrator@JU674J315CAOGPV MINGW64 ~/.ssh/sscom (master)
$ pwd
/c/Users/Administrator/.ssh/sscomAdministrator@JU674J315CAOGPV MINGW64 ~/.ssh/sscom (master)
$ git branchAdministrator@JU674J315CAOGPV MINGW64 ~/.ssh/sscom (master)
$ echo "this beginnings of project1" > any.fileAdministrator@JU674J315CAOGPV MINGW64 ~/.ssh/sscom (master)
$ git add .
warning: LF will be replaced by CRLF in any.file.
The file will have its original line endings in your working directory.Administrator@JU674J315CAOGPV MINGW64 ~/.ssh/sscom (master)
$ git commit -m "init"
[master (root-commit) e9565b2] init
warning: LF will be replaced by CRLF in any.file.
The file will have its original line endings in your working directory.1 file changed, 1 insertion(+)create mode 100644 any.fileAdministrator@JU674J315CAOGPV MINGW64 ~/.ssh/sscom (master)
$ git push origin master
git@192.168.0.88's password:
Counting objects: 3, done.
Writing objects: 100% (3/3), 229 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: error: insufficient permission for adding an object to repository database ./objects
remote: fatal: failed to write object
error: unpack failed: unpack-objects abnormal exit
To git@192.168.0.88:/home/git/repo/sscom.git! [remote rejected] master -> master (unpacker error)
error: failed to push some refs to 'git@192.168.0.88:/home/git/repo/sscom.git'

这个错误查看了一下这个链接

http://blog.csdn.net/yujunf/article/details/7595231

在服务器然后再修改一下

root@weiqifa-Inspiron-3847:/home/git/repo# ls
sscom.git
root@weiqifa-Inspiron-3847:/home/git/repo# chown -R git:git sscom.git/
root@weiqifa-Inspiron-3847:/home/git/repo# 

回到客户端再push一下

Administrator@JU674J315CAOGPV MINGW64 ~/.ssh/sscom (master)
$ git push
git@192.168.0.88's password:
Counting objects: 3, done.
Writing objects: 100% (3/3), 229 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@192.168.0.88:/home/git/repo/sscom.git* [new branch]      master -> masterAdministrator@JU674J315CAOGPV MINGW64 ~/.ssh/sscom (master)

4、总结

1、原理问题查清楚,哪步在哪里执行,要搞清楚

2、认真仔细,ubuntu对用户权限要求比较高,要特别注意一下

3、学会在网查资料


参考资料:

http://www.linuxdiyf.com/linux/12685.html

https://hacpai.com/article/1445337139234

http://www.linuxdiyf.com/linux/12159.html

http://www.linuxdiyf.com/linux/10730.html

http://www.gitguys.com/topics/creating-a-shared-repository-users-sharing-the-repository/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/469191.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实验四:使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用

王康 原创作品转载请注明出处 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 系统调用:操作系统中,程序员通过封装好的库函数来实现系统调用 前提 1,用户态内核态中断: 1,用户态内核…

【Pytorch神经网络理论篇】 37 常用文本处理工具:spaCy库+torchtext库

同学你好!本文章于2021年末编写,获得广泛的好评! 故在2022年末对本系列进行填充与更新,欢迎大家订阅最新的专栏,获取基于Pytorch1.10版本的理论代码(2023版)实现, Pytorch深度学习理论篇(2023版)目录地址…

海龟画图 python太阳花_python 简单的绘图工具turtle使用详解

目录 1. 画布(canvas) 1.1 设置画布大小 2. 画笔 2.1 画笔的状态 2.2 画笔的属性 2.3 绘图命令 3. 命令详解 4. 绘图举例 4.1 太阳花 4.2 绘制小蟒蛇 4.3 绘制五角星 python2.6版本中后引入的一个简单的绘图工具,叫做海龟绘图(Turtle Graphics),turtle库是python的内…

【Pytorch神经网络实战案例】31 TextCNN模型分析IMDB数据集评论的积极与消极

卷积神经网络不仅在图像视觉领域有很好的效果,而且在基于文本的NLP领域也有很好的效果。TextCN如模型是卷积神经网络用于文本处理方面的一个模型。 在TextCNN模型中,通过多分支卷积技术实现对文本的分类功能。 1 TextCNN 1.1 TextCNN模型结构 TexCNN…

python怎么画出好看的统计图_用最简单的 Python ,画最好看的图 [简单数据可视化]...

可以直接修改参数使用,非常的方便。import numpy as np import pandas as pd import holoviews as hv hv.extension(bokeh) macro_df pd.read_csv(http://assets.holoviews.org/macro.csv, \t) key_dimensions [(year, Year), (country, Country)] value_dimensio…

combobox之下拉宽度自适应

效果对比 先看下优化前后的效果,再看实现过程. 优化前 优化后 从上图中可看到,combobox优化后可以自适应不同长度的字符串,保证每个字符串都能够显示完整。 实现过程 当我们触发CBN_DROPDOWN事件时,不再使用默认的实现&#xff0c…

Python工具:将文件夹下的视频按照帧数输出图片文件(含代码)

1、描述 将一个视频流按帧数截取大量的图片 2、用途 AI的数据集制作,得到大量的图片,之后将其打标签 3、案例文件截图 4、代码实现: import cv2 import argparse import os# 边里该文件夹下的文件名称 def read_directory(directory_nam…

用Python语言对任意图像进行m*n的均匀分块(思路非常清晰,步骤简单)

主要用途:处理图片数据集 1 对单个图片进行分块 import numpy as np import matplotlib.pyplot as plt import cv2def divide_method1(img,m,n):#分割成m行n列print(img.shape)h, w img.shape[0],img.shape[1]gx np.round(h).astype(np.int)gy np.round(w).asty…

python爬虫用什么软件写_python爬虫怎么写

如今很多有编程能力的小伙伴已经不满足手动搜索内容了,都希望通过编写爬虫软件来快速获取需要的内容,那么如何使用python制作爬虫呢?下面小编给大家讲解一下思路 工具/原料 python 方法/步骤 1 首先我们需要确定要爬取的目标页面内容&#xf…

花书《深度学习》代码实现:01 线性代数:基本概念+代码实现基本运算

1 标量、向量、矩阵和张量 2 矩阵和向量相乘 3 单位矩阵和逆矩阵 3.0 单位矩阵 a np.identity(3) # 三行三列单位矩阵 3.1 矩阵的逆 A [[1.0,2.0],[3.0,4.0]] A_inv np.linalg.inv(A) print("A 的逆矩阵", A_inv) 3.1 转置 A np.array([[1.0,2.0],[1.0,0…

【Pytorch神经网络理论篇】 38 Transformers:安装说明+应用结构+AutoModel类

同学你好!本文章于2021年末编写,获得广泛的好评! 故在2022年末对本系列进行填充与更新,欢迎大家订阅最新的专栏,获取基于Pytorch1.10版本的理论代码(2023版)实现, Pytorch深度学习理论篇(2023版)目录地址…

clone是深拷贝还是浅拷贝_Python中的浅拷贝和深拷贝

本文翻译自copy in Python (Deep Copy and Shallow Copy),讲述了在Python语言中浅拷贝与深拷贝的不同用法。全文系作者原创,仅供学习参考使用,转载授权请私信联系,否则将视为侵权行为。码字不易,感谢支持。以下为全文内…

【Pytorch神经网络实战案例】32 使用Transformers库的管道方式实现:加载指定模型+文本分类+掩码语言建模+摘要生成+特征提取+阅读理解+实体词识别

管道方式是Transformers库中高度集成的极简使用方式。使用这种方式来处理NLP任务,只需要编写几行代码就能实现。通过本例的练习可以使读者对Transformers库的使用快速上手。 1 在管道方式中指定NLP任务 Transfomers库的管道方式使用起来非常简单,核心步…

jqprint获取打印页数_如何将每张打印多页PPT的PDF变成常规课件

在工作和学习中,经常会收到各种 PDF 文件,尤其是老师的课件。为了防止学生大量上传到各种文库网站赚积分,或者为了方便学生打印出来预习复习。通常,会在每页 PDF 里面,打印多张 PPT 内容。一般是 6 张或 9 张&#xff…

vba 判断文本框内容是否为空_【VBA】 数据输入 Inputbox 基本语法

在使用Excel 的过程中,如果需要用户输入简单的数据,作为“已知数”,那么可以使用inputbox 函数显示一个对话框,供用户在对话框中输入数据。 Inputbox 函数语法在一对话框来中显示提示,等待用户输入正文或按下按钮&…

无向图的深度优先遍历非递归_LeetCode0429: N叉树的层序遍历

题目介绍描述:给定一个 N 叉树,返回其节点值的层序遍历。 (即从左到右,逐层遍历)。例如,给定一个 3叉树 :返回其层序遍历:[[1],[3,2,4],[5,6] ]说明:树的深度不会超过 1000。 树的节点总数不会超过 5000。解题思路:★ …

一条龙操作有效解决PermissionError: [WinError 5] 拒绝访问的问题

1 问题描述 当在使用pip install 安装包时,如:pip install scrapy scrapyd scrapyd-client spiderkeeper出现报错:PermissionError: [WinError 5] 拒绝访问。: ‘c:\programdata\anaconda3\lib\site-packages\dateutil\easter.py’ 2 解决办…

预订态势图

//预订态势图JS//根据日期得到对应星期几 function getWeekByDay(riqi){//2017-01-23;var getWeek "";var arys1 new Array(); arys1riqi.split(-); //日期为输入日期,格式为 2013-3-10var ssdatenew Date(arys1[0],parseInt(arys1[1]-1),arys1…

altera fpga sdi输出方案_FPGA在电力电子中的应用有哪些?

大家好,很抱歉上周末没有及时更新公众号,本来这期想聊聊IGBT的拖尾电流,但是由于周末去深圳高交会(高新技术成果交易会)逛了一天,时间给耽搁了,感觉要想把拖尾电流讲清楚也不太容易,还得需要点时间&#xf…

【Pytorch神经网络理论篇】 39 Transformers库中的BERTology系列模型

同学你好!本文章于2021年末编写,获得广泛的好评! 故在2022年末对本系列进行填充与更新,欢迎大家订阅最新的专栏,获取基于Pytorch1.10版本的理论代码(2023版)实现, Pytorch深度学习理论篇(2023版)目录地址…