基于Ubuntu环境Git服务器搭建及使用


Chapter1 搭建本地git服务器及详细操作步骤

原文链接:https://blog.csdn.net/weixin_45805339/article/details/133318082

1.搭建本地git服务器

1.1 环境

服务器:Ubuntu18.04

客户端:windows10_x64、Ubuntu20.04

无论是服务端还是客户端都需要先安装git

Ubuntu安装方法:

sudo apt update
sudo apt install git

1.2 服务端配置

本地git仓库依赖OpenSSH进行数据传输,先检查时候已经安装OpenSSH:

kyland@kyland-u-wuhao:~$ dpkg --list | grep ssh
ii  openssh-client                                                     1:7.6p1-4ubuntu0.7                              amd64        secure shell (SSH) client, for secure access to remote machines
ii  openssh-server                                                     1:7.6p1-4ubuntu0.7                              amd64        secure shell (SSH) server, for secure access from remote machines

如上已经安装了OpenSSH,如果没有安装需要执行一下命令:

sudo apt install -y openssh-server openssh-client

查看ssh状态:

sudo systemctl status ssh 
#如果没有启动,手动启动ssh服务
sudo systemctl enable ssh

1.3 创建git专属用户

在服务器终端输入如下命令,输入两次密码后(比如密码也是:git),一路回车就创建好了

kyland@kyland-u-wuhao:~$ sudo adduser git
[sudo] kyland 的密码: 
正在添加用户"git"...
正在添加新组"git" (1001)...
正在添加新用户"git" (1001) 到组"git"...
创建主目录"/home/git"...
正在从"/etc/skel"复制文件...
输入新的 UNIX 密码: 
重新输入新的 UNIX 密码: 
passwd:已成功更新密码
正在改变 git 的用户信息
请输入新值,或直接敲回车键以使用默认值
	全名 []: 
	房间号码 []: 
	工作电话 []: 
	家庭电话 []: 
	其它 []: 
这些信息是否正确? [Y/n] 

1.4 创建git仓库

cd /home/git #进入git用户家目录
mkdir private_code_repository #创建本地私有git仓库目录
git@kyland-u-wuhao:~$ git init --bare RosProject.git #创建本地私有git仓库RosProject.git
已初始化空的 Git 仓库于 /home/git/RosProject.git/

1.5 配置免密登录基础

mkdir -p /home/git/.ssh/ #在git主目录下先创建一个.ssh目录以便后面使用

2.客户端拉取推送代码

2.1客户端创建ssh公钥

ssh-keygen -t rsa #终端输入一路回车
Generating public/private rsa key pair.
Enter file in which to save the key (/home/Administrator/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/Administrator/.ssh/id_rsa
Your public key has been saved in /home/Administrator/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:DyX41KiKahfSewidYUcINWBEDXfMuLRnuICwNMm16fQ Administrator@MS-TOVQOVTJPKXR
The key's randomart image is:
+---[RSA 3072]----+
|+BO==.           |
|o=.==+ . o       |
|+.o+= . + o      |
|o.o*.+ + o       |
|  =.BE. S        |
| o B .   o       |
|  + =     .      |
| o + .           |
|o . .            |
+----[SHA256]-----+
#在家目录.ssh下生成:id_rsa(私钥)、id_rsa.pub(公钥)两个密钥

原文链接:https://blog.csdn.net/weixin_56546908/article/details/124600622
设置用户名和邮箱
使用命令git config --global user.name "名称"设置用户名
使用命令git config --global user.email “邮箱"设置邮箱
在这里插入图片描述
查看设置的用户名和邮箱
使用命令git config --global --list
在这里插入图片描述
生成密钥信息
输入命令ssh-keygen -t rsa -C"youremail”
之后一直回车即可
在这里插入图片描述
youremail:你自己的邮箱账号 。
补充:-t:指定要创建的密钥的类型。rsa:一种加密算法。-C:添加注释
在这里插入图片描述
红色框框内是生成的公钥和私钥的位置

查看创建好的公钥
可使用gedit或其他工具查看生成的公钥,
以下用gedit: gedit /home/ubuntutest/.ssh/id_rsa.pub
在这里插入图片描述
此公钥将用gitee中SSH公钥的配置
打开gitee—>设置—>SSH公钥
在这里插入图片描述

sudo chown git.git rsa.pub 
git@ubuntu:~$ sudo cat >> .ssh/authorized_keys < rsa.pub 

git@ubuntu:~$ vim .ssh/authorized_keys
Administrator@PC-xxx MINGW64 /d/123/testgit (master)
$ git clone git@192.168.1.101:/home/git/mytest/mytest.git
Cloning into 'mytest'...
git@192.168.1.101's password:
warning: You appear to have cloned an empty repository.


2.2 免密配置

将客户端公钥id_rsa.pub内容复制到服务端.ssh/下新建文件authorized_keys里,这样我们在拉取推送代码时,就不需要输入密码了。

3.仓库使用(拉取及推送代码分支)

3.1拉取仓库分支

第一次我们需要拉取在服务端创建的仓库:

git clone git@192.168.0.83:/home/git/private_code_repository/RosProject.git
cd RosProject #进入工程
Administrator@MS-TOVQOVTJPKXR MINGW64 /d/git_pro/RosProject (ros2_230926)
$ ls -lah #查看工程内容
total 4.0K
drwxr-xr-x 1 Administrator 197121 0 Sep 26 15:48 ./
drwxr-xr-x 1 Administrator 197121 0 Sep 26 15:45 ../
drwxr-xr-x 1 Administrator 197121 0 Sep 26 17:17 .git/
-rw-r--r-- 1 Administrator 197121 0 Sep 26 15:48 .gitignore

3.2推送代码分支

每次我们更改一个功能的时候都需要创建一个分支,如:

$ git checkout -b ros2_230926 #创建本地分支
Switched to a new branch 'ros2_230926'

更改或者添加代码文件之后要提交代码分支到远程仓库

Administrator@MS-TOVQOVTJPKXR MINGW64 /d/git_pro/RosProject (ros2_230926)
$ touch .gitignore #添加.gitignore文件

Administrator@MS-TOVQOVTJPKXR MINGW64 /d/git_pro/RosProject (ros2_230926)
$ git status #查看当前分支状态
On branch ros2_230926

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        .gitignore

nothing added to commit but untracked files present (use "git add" to track)

Administrator@MS-TOVQOVTJPKXR MINGW64 /d/git_pro/RosProject (ros2_230926)
$ git add . #将文件添加到git仓库缓存区(暂存区)

Administrator@MS-TOVQOVTJPKXR MINGW64 /d/git_pro/RosProject (ros2_230926)
$ git status
On branch ros2_230926

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   .gitignore


Administrator@MS-TOVQOVTJPKXR MINGW64 /d/git_pro/RosProject (ros2_230926)
$ git commit -m'添加.gitignore'  #将某些已被跟踪的文件提交到版本库(包含工作区和版本库) 
#因为我们没设置git自身配置文件所以需要进行一下操作
Author identity unknown

*** Please tell me who you are.

Run

  git config --global user.email "you@example.com"
  git config --global user.name "Your Name"

to set your account's default identity.
Omit --global to set the identity only in this repository.

fatal: unable to auto-detect email address (got 'Administrator@MS-TOVQOVTJPKXR.(
none)')

Administrator@MS-TOVQOVTJPKXR MINGW64 /d/git_pro/RosProject (ros2_230926)
$ git config --global user.email "15840235191@163.com"

Administrator@MS-TOVQOVTJPKXR MINGW64 /d/git_pro/RosProject (ros2_230926)
$ git config --global user.name "wuhao"

Administrator@MS-TOVQOVTJPKXR MINGW64 /d/git_pro/RosProject (ros2_230926)
$ git commit -m'添加.gitignore' #提交到本地仓库成功
[ros2_230926 (root-commit) 0748e6c] 添加.gitignore
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 .gitignore
Administrator@MS-TOVQOVTJPKXR MINGW64 /d/git_pro/RosProject (ros2_230926)
$ git push -u origin ros2_230926 #在远程仓库创建该分支并且同步本地分支及远程分支
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 221 bytes | 221.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To 192.168.0.83:/home/git/private_code_repository/RosProject.git
 * [new branch]      ros2_230926 -> ros2_230926
branch 'ros2_230926' set up to track 'origin/ros2_230926'.

以上就完成了代码分支的推送

4.常用git指令

git checkout -b [分支名称] #创建本地分支
git status               #查看本地分支状态
git add .                #将文件添加到git仓库缓存区(暂存区)
git commit -m'[说明]'		#将某些已被跟踪的文件提交到版本库(包含工作区和版本库) 
git diff [修改文件路径]    #查看修改文件详细内容
git reset [分支号]			#本地仓库切换到该分支上,修改的代码保留
git reset --hard [分支号]			#本地仓库切换到该分支上,修改的代码不保留
git rebase [分支名]        #合并该分支到当前分支
git log                  #查看本地操作信息

Chapter2 创建局域网Git服务器

原文链接:https://blog.csdn.net/liigo/article/details/83790604

本文提供的方法适用于小型团队在局域网内通过git协同编码,基本配置简便易行,还额外提供基于SSH免密码提交代码的扩展方案。基本原理可参见文末总结。

一、基本步骤

第1步:安装 Linux,安装 Git

此处省略具体操作步骤。

第2步:创建 git 用户

在Linux系统内以管理员权限(root)执行如下命令创建Linux用户:

adduser git

此命令执行过程中会提示输入新用户的 登录密码,同时自动创建用户主目录/home/git,以及执行其他必要的工作。

该用户不一定非叫git,任意合法名称都行,例如 liigogit 等等,当然后续操作命令也要相应地修改,最终仓库地址也有所不同(仓库地址以此用户名开头)。

网上有方法禁止git用户登录SSH。我认为这一步是可选的。

第3步:创建 git 仓库

使用 git 用户登录Linux系统,在用户主目录 /home/git 内执行如下命令创建git仓库:

git init --bare myrepo.git

裸仓库(–bare)目录名称以后缀 .git 结尾是一种习惯性约定,并非必需。

该仓库本地目录是 /home/git/myrepo.git,或者 ~/myrepo.git,这个毫无疑问。

该仓库 远程目录 可以是以下任意一个:

git@192.168.0.2:/home/git/myrepo.git
git@192.168.0.2:~/myrepo.git
git@192.168.0.2:myrepo.git

咱们通常使用最后一个,因为它最简洁。

注意其中包含了用户名、IP地址、本地目录等信息;注意符号 @ 和 : 都是必不可少的。

第4步:客户端克隆 git 仓库

Git客户端可通过如下命令克隆仓库:

git clone git@192.168.0.2:myrepo.git

用户名git已经包含在仓库远程目录内,用户密码就是在第2步创建git用户时设定的那个密码。克隆仓库需要输入密码。

第5步:客户端推送 git 仓库

执行 git push 等命令时要求输入密码,就是第2步创建git用户时设定的那个密码。

至此,基本配置步骤已经完成,基础功能可用。如需免密码推送Git功能,请继续阅读本文。

二、配置SSH公钥免密码推送Git

经过以上5个步骤,Git服务器基本功能已经可用,但是至少还有两个缺点:

需要向团队所有成员公开git用户的密码,不太安全

每次推送仓库时都要输入git用户的密码,操作繁琐

下面为Linux系统的 git 用户配置 authorized_keys 文件,配置成功之后就无需公开其登录密码,推送时也无需输入密码,一并克服了两个缺点。

服务端配置文件 authorized_keys

使用 git 用户登录Linux,在其主目录 /home/git 内执行如下操作(无需管理员权限):

mkdir .ssh
chmod 700 .ssh
cd .ssh
touch authorized_keys
chmod 600 authorized_keys

LIIGO人云亦云注:SSH系统要求 .ssh 目录权限是700(drwx------),.ssh/authorized_keys 文件权限是600(-rw-------)。

然后编辑该文件 /home/git/.ssh/authorized_keys ,逐行输入团队各成员提供的公钥文件内容(下文介绍生成SSH公钥私钥的方法)。

20221019 补记:可以使用ssh-copy-id命令将本机内指定的公钥文件内容推送追加到远程主机指定用户的authorized_keys文件末尾,示例如下:

ssh-copy-id -i id_rsa.pub git@192.168.0.2

三、客户端生成SSH公钥密钥

Linux用户

Linux登录用户在任意目录下执行命令 ssh-keygen 连续按三次回车键即自动生成如下两个文件:

~/.ssh/id_rsa
~/.ssh/id_rsa.pub

其中 id_rsa 就是刚创建的密钥文件(此文件名和路径不得随意变动),id_rsa.pub 是公钥文件。

团队各成员分别将自己的公钥文件 id_rsa.pub 或其内容发给git用户管理员,让他写入服务端 authorized_keys 文件。

TortoiseGit 用户

Tortoise Git 用户可通过 PuTTYgen.exe 创建公钥密钥。具体方法是点击Generate按钮,随意滑动鼠标直至创建完成,生成的公钥文本显示在窗口上方多行只读编辑框内,复制其内容发送给git用户管理员,让他写入服务端 authorized_keys 文件。最后还要点击 Save private key 按钮保存密钥文件(.ppk,Putty密钥文件,区别于OpenSSH密钥文件(id_rsa),但利用PuTTYgen.exe,前者可以导出后者)。还有一点要特别注意,通过 Tortoise Git 图形界面克隆仓库时需勾选"Load Putty key",并选定前面生成的Putty密钥文件(.ppk)。至于Pageant.exe,不用管他,Tortoise Git会自动启动它并自动加载Putty密钥文件。

LIIGO多说一句,对于Github上的仓库,要应用公钥密钥,通过TortoiseGit克隆仓库时必须使用SSH地址(形如git@github.com:liigo/rust.git),而非HTTPS地址(形如https://github.com/liigo/rust.git)。Github网站仓库首页同时提供这两类链接(“Clone with SSH” VS “Clone with HTTPS”)。

四、总结

服务器是开启了SSH服务的Linux系统,在其中创建名称为 git 的Linux用户(同时也是SSH登录用户)专用于管理Git仓库,仓库位于服务器本机目录 /home/git/name.git 内(name.git是目录名),仓库SSH地址即客户端克隆地址是 git@ip:name.git,Git克隆命令行是 git clone git@ip:name.git。

在未配置SSH公钥的情况下,需要向仓库使用者公开 git 用户的登录密码,克隆(clone)/拉取(pull)/推送(push)等操作都需要输入该密码。在服务端配置好文件 /home/git/.ssh/authorized_keys 并录入各使用者SSH公钥后,就无需公开该登录密码,所有Git操作都不用输入密码。

前面的基本操作步骤都很简单,可以提供基本的Git服务;配置SSH公钥的操作相对复杂,但客户使用体验更好。

此方法的缺点是,不能有针对性的分别设置团队各成员的权限,所有人都能完全操控Git仓库。

可能有朋友产生疑问,团队所有成员共用一个git用户提交代码,还能分清代码是谁写的吗?当然能。Git客户端推送时携带了代码作者的姓名和邮件地址,都完整的体现在 git log 里面,这个无需担心。Github网站后端也是如此操作的,并无不妥。

Chapter3 内网搭建git服务器

原文链接

Windows11生成密钥对,并把公钥放到git服务器,用于免密

Chapter4 局域网Git服务器和客户端的搭建和简单使用

原文链接:https://blog.csdn.net/vhcjgc/article/details/124043169

一、软件下载安装

在Windows下,需要安装两个工具:Git for Windows 以及 TortoiseGit。
Git for Windows是Git的官方Windows版本,提供了Git的所有功能,但是由于Git完全是为了Lnix系统开发的开源软件,注重功能而忽略了易用性,对于初学者不是特别友好。

TortoiseGit则为Git for Windows加上了一个易用的右键菜单,并且将文件状态等信息很好地与Windows资源管理器的整合。
安装步骤参考

二、使用

1、服务器操作

首先新建一个文件夹名为test.git,(用作交换各客户端的代码目录,仅用于被推送。)
在这里插入图片描述
设置共享
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
共享文件夹设置好了之后。右键点击>git在这里创建版本库>弹出将复选框打上勾,确定即可
在这里插入图片描述
在这里插入图片描述
查看共享目录
服务器ip+文件夹名称

172.16.202.23\test.git

在客户机查看此共享文件夹是否创建成功

win + R
输入
172.16.202.23

在这里插入图片描述
打开了服务器的共享文件夹
在这里插入图片描述
至此,服务器已经配置好了。 这个目录是共享的目录。也是将来在客户端电脑上要克隆的地址。

2、客户端的克隆和推送操作

新建文件夹,右键>Git克隆
在这里插入图片描述
选择目标文件夹,点击确定
在这里插入图片描述
在这里插入图片描述
随便添加一个文件
在这里插入图片描述
右键>git 提交
在这里插入图片描述
在这里插入图片描述
点击推送
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在本机的另一个文件夹中克隆
在这里插入图片描述
可以看到版本已经更新

局域网内搭建git

Chapter5 ubuntu 18.04 git2.17.1升级 2.41

原文链接:https://www.cnblogs.com/wutou/p/17640216.html

一、添加 git 官方源

sudo add-apt-repository ppa:git-core/ppa

根据提示 回车继续
在这里插入图片描述

二、更新仓库包索引

sudo apt update

不更新,即便 git 官方有更新,你也搜索不到

三、查看有什么软件可以更新

apt list --upgradable

可以看到左边红箭头,显示是最新的 git 2.41,而右边箭头是系统里装的 2.17.1 版本

四、安装最新版本

sudo apt-get install git

安装最新版本后:
Ubunt:
在这里插入图片描述

  • 9
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值