IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> 服务器上的 Git -> 正文阅读

[开发工具]服务器上的 Git

1.协议

Git 可以使用四种不同的协议来传输资料:本地协议(Local),HTTP 协议,SSH(Secure Shell)协议及 Git 协议。

  • 本地协议
  1. git clone /srv/git/project.git:克隆一个版本库,/srv/git/project.git 为路径。

  2. git clone file:///srv/git/project.git:克隆一个版本库,/srv/git/project.git 为路径。

TIP:1,2两条命令的目的相同,行为有些许差异。

  1. git remote add local_proj /srv/git/project.git:增加一个本地版本库到现有的 Git 项目。
  • http协议
  1. git clone https://example.com/gitproject.git:克隆一个版本库。
  • ssh协议
  1. git clone ssh://[user@]server/project.git:克隆一个版本库,与远端仓库建立连接的用户名为user。

  2. git clone [user@]server:project.git:克隆一个版本库,与远端仓库建立连接的用户名为user。

  • git协议

2.在服务器上搭建 Git

  1. git clone --bare my_project my_project.git:从my_project(git的工作目录,存放项目代码的目录)克隆一个裸仓库名字为my_project.git,名字通常以**.git**结尾。

裸仓库:即一个没有当前工作目录的仓库, 因为该仓库仅仅作为合作媒介,不需要从磁盘检查快照;存放的只有 Git 的资料。 简单的说,裸仓库就是你工程目录内的 .git 子目录内容,不包含其他资料。

git clone --bare my_project my_project.git
整体上效果大致相当于
cp -Rf my_project/.git my_project.git

  1. scp -r my_project.git user@git.example.com:/srv/git:把裸仓库my_project.git放到服务器上。

scp为linux中为ssh连接提供的复制命令,user为指定连接的用户名。

  1. git clone user@git.example.com:/srv/git/my_project.git:ssh的方式以用户名user从远程仓库克隆仓库。

  2. 到该项目目录中运行 git init 命令,并加上 --shared 选项, 那么 Git 会自动修改该仓库目录的组权限为可写。 注意,运行此命令的工程中不会摧毁任何提交、引用等内容。
    $ ssh user@git.example.com (ssh方式建立连接)
    $ cd /srv/git/my_project.git
    $ git init --bare --shared

3.生成 SSH 公钥

ssh-keygen:生成一份ssh相关的密钥,对应于 id_dsa 或 id_rsa 命名的文件,其中一个带有 .pub 扩展名。 .pub 文件是你的公钥,另一个则是与之对应的私钥。

TIPS:

  1. 上述文件默认生成在~/.ssh目录中。
  2. 生成密钥时会提示输入两次密钥口令,可以输入为空,假如输入了密钥,请确保运行的是ssh-keygen -o命令。
  3. 公钥要发送个管理员。

4.配置服务器

本例中,我们将使用 authorized_keys 方法来对用户进行认证。 同时我们假设你使用的操作系统是标准的 Linux 发行版,比如 Ubuntu。 首先,创建一个操作系统用户 git,并为其建立一个 .ssh 目录。

以下操作可通过 ssh-copy-id 命令自动完成,这样就不必手动复制并安装公钥了。

  1. 首先,创建一个操作系统用户 git,并为其建立一个 .ssh 目录
$ sudo adduser git
$ su git
$ cd
$ mkdir .ssh && chmod 700 .ssh
$ touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys
  1. 把公钥(*.pub文件)加入系统用户 git 的 .ssh 目录下 authorized_keys 文件的末尾:
$ cat /tmp/id_rsa.john.pub >> ~/.ssh/authorized_keys
$ cat /tmp/id_rsa.josie.pub >> ~/.ssh/authorized_keys
$ cat /tmp/id_rsa.jessica.pub >> ~/.ssh/authorized_keys
  1. 现在我们来为开发者新建一个空仓库。可以借助带 --bare 选项的 git init 命令来做到这一点,该命令在初始化仓库时不会创建工作目录:
$ cd /srv/git (存放git空仓库的目录)
$ mkdir project.git (git空仓库目录)
$ cd project.git
$ git init --bare
Initialized empty Git repository in /srv/git/project.git/
  1. 接着,John、Josie 或者 Jessica 中的任意一人(拥有公钥对应私钥的人)可以将他们项目的最初版本推送到这个仓库中:
# on John's computer
$ cd myproject
$ git init
$ git add .
$ git commit -m 'initial commit'
$ git remote add origin git@gitserver:/srv/git/project.git
$ git push origin master

注意:每添加一个新项目,都需要有人登录服务器取得 shell,并创建一个裸仓库。

  1. 克隆此仓库,并推回各自的改动,步骤:
$ git clone git@gitserver:/srv/git/project.git
$ cd project
$ vim README
$ git commit -am 'fix for the README file'
$ git push origin master

通过这种方法,你可以快速搭建一个具有读写权限、面向多个开发者的 Git 服务器。

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-08-19 19:26:35  更:2022-08-19 19:27:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 22:47:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码