参考:

https://www.cnblogs.com/dee0912/p/5815267.html#_label0

https://blog.csdn.net/carfge/article/details/79691360

https://www.cnblogs.com/fly_dragon/p/8718614.html

1、环境准备

服务器:CentOS 7.3 + git (1.8.3.1)

客户端:win10 + git (2.17.0.windows.1)

2、服务器安装git

yum install -y git

  

3、创建git用户,管理 git服务

[root@localhost home]# useradd git
[root@localhost home]# passwd git

4、服务器创建git 仓库

设置/home/git/repository-git 为git 服务器仓库,然后把 git 仓库的 owner 修改为 git 用户。

[root@localhost git]# mkdir repository-git
[root@localhost git]# git init --bare repository-git/
Initialized empty Git repository in /home/git/repository-gt/
[root@localhost git]# chown -R git:git repository-git/

5、客户端安装git

下载 Git for Windows,地址:https://git-for-windows.github.io/

安装完之后,可以使用 Git Bash 作为命令行客户端。

5.1、选择一个目录 F:\project\sell 作为本地仓库,右键进入Git Bash 命令行模式

初始化本地仓库:git init 

5.2、尝试克隆一个服务器的空仓库到本地仓库

git clone git@192.168.116.129:/home/git/repository-gt

第一次连接到目标 Git 服务器时会得到一个提示:

The authenticity of host '192.168.116.129(192.168.116.129)' can't be established.
RSA key fingerprint is SHA256:Ve6WV/SCA059EqoUOzbFoZdfmMh3B259nigfmvdadqQ.
Are you sure you want to continue connecting (yes/no)?

选择 yes:

Warning: Permanently added '192.168.116.129' (RSA) to the list of known hosts.

此时 C:\Users\用户名\.ssh 下会多出一个文件 known_hosts,以后在这台电脑上再次连接目标 Git 服务器时不会再提示上面的语句。

6、客户端创建公钥和私钥

客户端git 第一次连接 服务器端的git仓库时,需要创建公钥和私钥,并将公钥发给服务器保存起来,才能正常访问。

$ ssh-keygen -t rsa -C "xxxx100@163.com",邮箱随便输入即可。

 

此时 C:\Users\用户名\.ssh 下会多出两个文件 id_rsa 和 id_rsa.pub

id_rsa 是私钥

id_rsa.pub 是公钥

7、服务器 git 打开RSA 认证

进入 /etc/ssh 目录,编辑sshd_config,查看以下三个配置是否被注释,如被注释,取消掉注释:

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

  

保存并重启sshd服务:

  servcie sshd restart

由 AuthorizedKeysFile 得知公钥的存放路径是 .ssh/authorized_keys,实际上是 $Home/.ssh/authorized_keys,由于管理 git 服务的用户是 git,所以实际存放公钥的路径是 /home/git/.ssh/authorized_keys

在 /home/git/ 下创建目录 .ssh

[root@localhost git]# pwd
/home/git
[root@localhost git]# mkdir .ssh
[root@localhost git]# ls -a
. .. .bash_logout .bash_profile .bashrc .gnome2 .mozilla .ssh

然后把 .ssh 文件夹的 owner 修改为 git

[root@localhost git]# chown -R git:git .ssh
[root@localhost git]# ll -a
总用量 32
drwx------. 5 git git 4096 8月 28 20:04 .
drwxr-xr-x. 8 root root 4096 8月 28 19:32 ..
-rw-r--r--. 1 git git 18 10月 16 2014 .bash_logout
-rw-r--r--. 1 git git 176 10月 16 2014 .bash_profile
-rw-r--r--. 1 git git 124 10月 16 2014 .bashrc
drwxr-xr-x. 2 git git 4096 11月 12 2010 .gnome2
drwxr-xr-x. 4 git git 4096 5月 8 12:22 .mozilla
drwxr-xr-x. 2 git git 4096 8月 28 20:08 .ssh

设置权限,此步骤不能省略,而且权限值也不要改,不然会报错。

$ chmod 700 /home/git/.ssh/

$ chmod 600 /home/git/.ssh/authorized_keys

将客户端公钥导入服务器端 /home/git/.ssh/authorized_keys 文件

打开 C:\Users\user\.ssh 下 id_rsa.pub,将里面所有的内容拷贝到/home/git/.ssh/authorized_keys文件里。

8、客户端与服务器仓库关联起来

git remote add origin git@192.168.116.129:/home/git/repository-git

将本地项目推送到远程仓库:

git add -A

git commit -m 'First push.'

git push -u origin master

git push -u origin master 如果报错,则表明本地仓库与远程仓库冲突,需要先拉取远程仓库到本地:

git pull --rebase origin master

现在我们有这样的两个分支,test和master,提交如下:

       D---E test
/
A---B---C---F--- master

在master执行git merge test,然后会得到如下结果:

       D--------E
/ \
A---B---C---F----G--- test, master

在master执行git rebase test,然后得到如下结果:

A---B---D---E---C‘---F‘---   test, master

merge 操作会生成一个新的节点,之前的提交分开显示。
而rebase操作不会生成新的节点,是将两个分支融合成一个线性的提交。

9、另起一个客户端仓库拉取远程仓库测试

首先初始化本地仓库,其次将本地仓库与远程仓库进行关联,之后再拉取远程仓库的项目。

jinwe@DESKTOP-V4BF121 MINGW64 /e/project/sell2
$ git init
Initialized empty Git repository in E:/project/sell2/.git/ jinwe@DESKTOP-V4BF121 MINGW64 /e/project/sell2 (master)
$ git remote add origin git@192.168.116.129:/home/git/repository-git jinwe@DESKTOP-V4BF121 MINGW64 /e/project/sell2 (master)
$ git fetch origin master
git@192.168.116.129's password:
remote: Counting objects: , done.
remote: Compressing objects: % (/), done.
remote: Total (delta ), reused (delta )
Unpacking objects: % (/), done.
From 192.168.116.129:/home/git/repository-git
* branch master -> FETCH_HEAD
* [new branch] master -> origin/master

在本地建立分支并切换到该分支,将远程分支的内容拉取到本地。

jinwe@DESKTOP-V4BF121 MINGW64 /e/project/sell2 (master)
$ git checkout -b master origin/master
Already on 'master'
Branch 'master' set up to track remote branch 'master' from 'origin'. jinwe@DESKTOP-V4BF121 MINGW64 /e/project/sell2 (master)
$ git pull origin master
git@192.168.116.129's password:
remote: Counting objects: , done.
remote: Compressing objects: % (/), done.
remote: Total (delta ), reused (delta )
Unpacking objects: % (/), done.
From 192.168.116.129:/home/git/repository-git
* branch master -> FETCH_HEAD
9a87e03..83b12cd master -> origin/master
Updating 9a87e03..83b12cd
Fast-forward
src/test/java/com/latiny/sell/LoggerTest.java | -
file changed, deletion(-)

最后,回到本地文件夹E:\project\sell2 查看,已拉取远程分支到本地啦!

10、额外知识

客户端在使用ssh方式连接时,报错。查看了下ssh使用的注意事项,记录下来。

查看状态:

service sshd status

service sshd restart

service sshd stop

ssh服务的网络连接情况:

netstat -ntlp

netstat -ntlp|grep sshd

查看本地仓库管理的远程仓库

git remote -v

修改远程仓库的关联

比如,之前你关联的远程仓库使用的协议是 http ,你想将关联的远程仓库的 url 改为 ssh 协议的。

修改关联的远程仓库的方法,主要有三种。

第一种:使用 git remote set-url 命令,更新远程仓库的 url

git remote set-url origin <newurl>

第二种:先删除之前关联的远程仓库,再来添加新的远程仓库关联

# 删除关联的远程仓库
git remote rm <name>(远程分支)
# 添加新的远程仓库关联
git remote add <name> <url>
远程仓库的名称推荐使用默认的名称 origin 。

第三种:直接修改项目目录下的 .git 目录中的 config 配置文件。

11、常见的git 命令

git init  //初始化本地git仓库

git add<file>  //添加文件

git add *.html  //添加一类文件

git add .  //添加所有文件

git status //查看状态

git commit //提交

git commit -m ''提交并注释 (这样就可以不用进入到编辑页面了)

git push  //从远程仓库考取数据

git clone  //从远程仓库拷贝数据

git config --global user.name'张宜成'  配置用户名

git config -- global user.email 'chengchengzhang123@qq.com' 配置邮箱

git rm --cached 文件名  //从add工作区中删除

git branch 分支名 (创建分支)

git checkout 分支名 (切换到你的分支中)

git checkout master(切换到主分支)

git merge 分支名(在master主分支下使用 将分支合并到主分支)

git remote 查看连接

git remote add origin 链接  (创建链接)

git remote remove 名称(删除remote)

git clone 将服务器端的项目克隆岛本地仓库

touch .gitignore 忽略需要上传的文件(将要忽略的文件放到该文件夹)

touch.gitignore 忽略文件(/文件名)

README.md文档 git对项目进行描述

$ git push origin master //推送到远程仓库

abc

Linux 下搭建Git 服务器详细步骤的更多相关文章

  1. 【转】在Linux下搭建Git服务器

    在 Linux 下搭建 Git 服务器 环境: 服务器 CentOS6.6 + git(version 1.7.1)客户端 Windows10 + git(version 2.8.4.windows. ...

  2. 在Linux下搭建Git服务器的方法是什么样?

    第一步 安装git:可以通过命令的方式快速安装,不同的linux的安装方法可能不一样,我的是采用的yum方法.ubuntu可以用apt-get命令.sudo yum install git 第二步 添 ...

  3. 在Linux下搭建Git服务器步骤

    环境: 服务器 CentOS6.6 + git(version 1.7.1) 客户端 Windows10 + git(version 2.8.4.windows.1)  ① 安装 Git Linux ...

  4. 在 Linux 下搭建 Git 服务器

    环境: 服务器 CentOS6.6 + git(version 1.7.1)客户端 Windows10 + git(version 2.8.4.windows.1) ① 安装 Git Linux 做为 ...

  5. 在 Linux 下搭建 Git 服务器(yum安装)

    服务端(linux): 1. 安装git [root@localhost ~]# yum -y install git 2. 增加一个git账户 为了管理的方便,在linux下面增添一个 " ...

  6. Linux下搭建Git服务器

    1.安装Git 见 Jenkins持续集成环境部署 第四节 2.创建Git用户和用户组 groupadd git useradd git -g git 3.创建证书切换到git用户创建证书 su gi ...

  7. kali linux 下搭建git服务器

    参考:http://www.cnblogs.com/dee0912/p/5815267.html https://www.liaoxuefeng.com/wiki/001373951630592960 ...

  8. 在Linux下搭建git服务器

    http://www.cnblogs.com/dee0912/p/5815267.html 步骤很详细,很受用

  9. Windows操作系统下搭建Git服务器和客户端。

    本文将介绍如何在Windows操作系统下搭建Git服务器和客户端.服务器端采用的是Bonobo Git Server,一款用ASP.NET MVC开发的Git源代码管理工具,界面简洁,基于Web方式配 ...

随机推荐

  1. vue中params-解决换路由不刷新问题

    因为依赖路由的params参数获取写在created生命周期里面,因为相同路由二次甚至多次加载的关系 没有达到监听,退出页面再进入另一个文章页面并不会运行created组件生命周期,导致文章数据还是第 ...

  2. 微信小程序onLoad、onShow、onHide、onUnload区别

    onLoad:页面第一次加载时触发,从跳转页面返回时不能触发,可以传递参数 onShow:页面显示或从后台跳回小程序时显示此页面时触发,从跳转页面返回时触发,不能传递参数 onHide:页面隐藏,例如 ...

  3. 如何判断kbmMWClientQuery当前记录的增改状态?

    有朋友问我,客户端使用了kbmMWClientQuery,对其进行了编辑后,对于指定的记录,如何判断是否是增加的记录,或者是被修改后的记录? 下面这个函数,返回aDataSet当前记录的修改状态: f ...

  4. 【转】Linux设置和查看环境变量的方法

    转: http://www.jb51.net/LINUXjishu/77524.html 1. 显示环境变量HOME $ echo $HOME /home/redbooks 2. 设置一个新的环境变量 ...

  5. 网络初级篇之VLAN间路由(原理与配置)

    一.VLAN间的路由 由于VLAN隔离了二层广播域,也间接的隔离了各个VLAN之间的其他二层流量交换,这样导致属于不同VLAN之间的用户不能进行二层的通信.只能经过三层的路由转发才能将报文从一个VLA ...

  6. linux PDF转换

    在libre-office以安装的情况下 soffice --convert-to pdf *.odt --invisible

  7. ubantu32位 linux下hexedit的下载安装

    Hexedit软件介绍: hexedit是一个开源的完全免费的命令行软件,可用于在任何GNU / Linux操作系统下以十六进制和ASCII(美国信息交换标准代码)格式查看和编辑文件. 下载: 在so ...

  8. C++虚函数作用原理(一)——虚函数如何在C++语言逻辑中存在

    C++多态,接触其实也没太长的时间.上课的时候老师总是不停的讲,多态可以实现利用一个基类对象调用不同继承类的成员函数.我就会觉得很伤脑筋,这个的原理到底是什么?是什么呢? 开始的时候我觉得自己应该能够 ...

  9. QTP(8)

    一.Action 1.调用Action C:\Program Files\HP\QuickTest Professional\CodeSamplesPlus\Flight_Samples (1)调用A ...

  10. Linux文件归档管理

    Linux怎样保存文件 数据 - 这里数据就是文件的内容 元数据 - 在linux系统中,所有与某个文件相关的额外信息都保存在一个叫做i-节点(inode)的结构中 文件名 - 文件名保存在名为目录项 ...