局域网Git服务器搭建

环境

服务器 Ubnutu16.4 + git (version 2.7.4)
客户端 windows10 + git (version 2.20.1.windows.1)

1、 安装Git

服务器端

#安装git
#sudo apt-install git-core
#查看git版本
#git --version

客户端
下载GIt Bash,戳进去有完整的教程。

2、 创建git用户

#这一步需要管理员的权限
#sudo useradd git
#然后进行密码的设置,但是对于已经创建账户的服务器来说,这一步可以自行跳过

3、 配置无密码SSH登陆

在windows的git bash上输入

$ssh-keygen -t rsa 
 #连按回车三下,因为他会要求你设置git本地的登陆密码,直接按回车表示不设置密码
Generating public/private rsa key pair.

Enter file in which to save the key (/c/Users/huanshangfeng/.ssh/id_rsa): Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/huanshangfeng/.ssh/id_rsa.
Your public key has been saved in /c/Users/huanshangfeng/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:c7C9CgiSgYZKxuh/9vsgZAhAsj76ceYtcgjLDonPJRM huanshangfeng@DESKTOP-LHO65D8
The key's randomart image is:
+---[RSA 2048]----+
|+.               |
|B.               |
|**      .        |
|Bo. .    +       |
|++E. o  S o      |
|+oooo.   o .     |
|*o+o=+..  .      |
|o=oO=.o...       |
|..+o...o+.       |
+----[SHA256]-----+
#在显示上面的内容后,在执行后续操作
$cat ~/.ssh/id_rsa.pub
#下面显的就是你的密钥
#ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDZJLyIJjkpEvk/hvdYRo2lapx8biu3
W0cKEZ6ouE9BQrWIQcm7FYk510mbRDPHV9FCnKt5qLF9UkR1aXE7iMq7aPmftXzH
iuuWTvn/v9GP95EUHBOqWWTnCey9V7E5HOhyJ04N0HPnqwRuLuhiK36piho6GkoI+
LN08PVJyDxXBljwxbobfOj5L3hvNyxGHXyZA9RuYPeMHe1yPkhHlJaqbpPfMMVUEHV
2b+W2kaWfPjRDZ6rKOKMYxkuXA/j9yQ/Xmzyp0PkX49D+7JaBMpFf2VetsnbO09Jt6H
mQ3cLLkngM3inxDXWysgyurQtcidzXHE5JSZb3Ts8GnY+3v6Yn huanshangfeng@DESKTOP-LHO65D8

接下来在你的/home/git/的目录下进行如下操作

$ls -a #找到隐藏的目录.ssh
$cd .ssh
#在.ssh目录下如果有authorized_kesys文件就可以直接将密钥复制进去,如果没有就创建该文件
$touch authorized_keys

在此之后,你去Git clone项目的时候,就无需输入密码

4、初始化服务器端仓库

#在你的目录下创建一个新的文件夹.git (有没有.git后缀无关紧要,只要是为了让自己知道这个文件夹是干什么的,容易管理)
$mkdir sample.git
$cd sample.git
#初始化仓库
$git --bare init #这只是一个裸仓库,里面只有一个.git的文件

至此,服务器端的操作就基本完成

客户端的git clone远程克隆仓库

#git clone 用户名字@服务器ip:端口号 仓库地址
$git clone git@172.24.97.26:/home/git/sample.git #当端口号是22时,可以省略不写

客户端的Git配置和使用

1、配置Git

这一步相当的重要,当你与他人合作一个项目的时候,你向远程仓库上传代码的时候必须留下你的名字,不然你的伙伴压根不知道你上传的代码是哪一份,在每一次上传时,git都会提示你

git config --global user.name"your name" #设置你的名字  
git config --global user.email"myEmail@example.com"#设置你的邮箱

2、创建本地仓库,并初始化

#打开Git Bash创建一个空的文件夹
mkdir test
cd test
git init #初始化本地仓库
Initialized empty Git repository in E:/test/.git/   #初始化成功的仓库后的提示

3、用简单的名字来表示你要上传的url

#git remote [shortname] [url] #shortname:你定义的名字。 url:远程仓库的地址
git remote add origin hsf@172.24.97.26:/home/hsf/sample.git

使用git remote 查看自己设置的所有名字

win10添加局域网git共享仓库 windows搭建局域网git_缓存


使用git remote -v 查看更加详细的信息

win10添加局域网git共享仓库 windows搭建局域网git_win10添加局域网git共享仓库_02


使用git remote rm [别名] 删除已经设置的远程目录

win10添加局域网git共享仓库 windows搭建局域网git_git_03

4、上传文件到远程的仓库

1、git add 加入上传文件到缓存

2、执行 git commit 将缓存区内容添加到仓库中

3、上传文件到远程仓库

我已经事先将一个test.txt文件储存在本地仓库中

使用git status 或者 git status -s 的命令可以看到当前文件的状态,红色代表该文件并没有加入缓存

win10添加局域网git共享仓库 windows搭建局域网git_win10添加局域网git共享仓库_04

#使用git add命令加入缓存
git add [文件名] #将一个文件加入缓存当中
git add . #将该仓库中所有的文件都加入缓存当中

加入缓存后查看发现,提交的文件变成绿色

win10添加局域网git共享仓库 windows搭建局域网git_缓存_05


再次之后我对test.txt文件的内容进行了改动,使用git status后会告诉你该文件有改动,颜色变成红色,AM表示改动

win10添加局域网git共享仓库 windows搭建局域网git_缓存_06


当你想要想远程仓库加入最新改动的文件时,需要在此使用git add将文件加入缓存

5、执行 git commit 将缓存区内容添加到仓库中

git commit -m"注释" #可以通过注释来标识此次上传改动了什么。
#上传之后,使用git status就可以看到缓存区里已经没有东西

win10添加局域网git共享仓库 windows搭建局域网git_git_07

6、上传文件到远程仓库

git push -u origin master #origin为你要上传的地址的别名

win10添加局域网git共享仓库 windows搭建局域网git_win10添加局域网git共享仓库_08

7、版本回退的问题

git log #可以查看所有的提交
#我预先提交了两个版本的test.txt
#当我们直接使用git clone下载的是最新的版本

win10添加局域网git共享仓库 windows搭建局域网git_缓存_09

git reset --hard (五六个数字)#上图 **黄色字体** commith后的数字
#这样就可以回到你想要的版本

win10添加局域网git共享仓库 windows搭建局域网git_win10添加局域网git共享仓库_10


但此时远程仓库还是我们之前提交的最新的版本,如果想要远程仓库的版本和我们当前版本保持一致,使用git push -f 强制回退版本