Git安装配置(完整版)

摘要:
/usr/bin/bashcd/var/www/aunsetGIT_DIRgitpulloriginmaster为您提供了另一个权限:chmod755/var/gitdata/a。git/books/post-receivechowngit:git/var/gitdata/a在git/hooks/post-receive模式下,客户端提交代码,服务器项目可以自动更新。前提是您必须切换到git帐户才能手动拉取项目,并执行yes授权以记住密码,否则无法自动更新。

首先安装Windows客户端的git和TortoiseGit。

安装这两个软件还是蛮重要的,很多选项不能乱选。

为了写个完整的博客,我是装了又卸,卸了又装。

1.安装git

下载:https://git-scm.com/

Git安装配置(完整版)第1张

Git安装配置(完整版)第2张

Git安装配置(完整版)第3张

Git安装配置(完整版)第4张

Git安装配置(完整版)第5张

Git安装配置(完整版)第6张

2.安装TortoiseGit

下载https://tortoisegit.org/download/ 别忘了中文语言包也一起下载了

Git安装配置(完整版)第7张

当把乌龟安装好后遇到语言选择的界面先别动,直接安装中文包,中文包安装好后再继续配置乌龟点击refresh就可以选择中文继续往下走。

Git安装配置(完整版)第8张

3.安装git

yum install git

4.创建存储目录(涉及路径乃自定义,看心情。)

mkdir /var/gitdata

单给一个777权限 以便将来用git账号在这里创建git仓库

chmod 777 /var/gitdata

5.添加git用户(其实后来我把git用户换到了root组 还挺方便的)

groupadd git

useradd git -g git

passwd git

6.切换到git账号

su git

7.创建项目仓库

cd /var

mkdir gitdata/a.git

8.初始化裸仓库

git init --bare gitdata/a.git

9.创建公钥

ssh-keygen(按这条命令的时候直接按回车 不要输入东西)

然后会在当前用户也就是git用户的家目录里生成一个.ssh目录 里面id_rsa是私钥 id_rsa_pub是公钥

10.切换回root

su root

vi /etc/ssh/sshd_config

打开以下注释:

PubkeyAuthentication yes

AuthorizedKeysFile .ssh/authorized_keys (指定存放公钥的路径是git家路径.ssh下的authorized_keys)

11.重启sshd服务

systemctl restart sshd.service

12.客户端创建公钥

在本地项目目录中找个空目录,点击右键打开git bash

ssh-keygen(按这条命令的时候直接按回车,不要输入东西)

此时,C:user用户名.ssh下会多出两个文件id_rsa是私钥,id_rsa_pub是公钥。

13.下面两条语句客户端和服务器端都要执行 输入自己github上的用户名和邮箱

git config --global user.name zhao-baolin

git config --global user.email 937240319@qq.com

14.服务端存放客户端公钥

vi /home/git/.ssh/authorized_keys

将客户端的公钥文件里的东西全部复制进去 当然 当前目录下的那个id_rsa.pub里的内容也可以一股脑儿复制进来。

15.修改权限

.ssh目录的权限必须为700(必须)

chmod 700 /home/git/.ssh

.ssh/authorized_keys文件的权限必须为600(必须)

chmod 600 /home/git/.ssh/authorized_keys

修改家目录所有者

chown -R git:git /home/git

16.github存放服务端公钥

打开https://github.com/ 登陆账号 进入设置

在SSH and GPG keys中添加Linux服务端的公钥,title随便填,内容把公钥文件里的东西全部复制过来就行。

回到Linux 输入以下命令:

ssh -T git@github.com

输入yes回车 提示成功

17.检出项目(用git的话叫做克隆项目)

切换git账号

su git

git clone git@192.168.11.11:/var/gitdata/a.git

以上命令客户端打开bash输入一遍,服务端也输入一遍。

如果服务器更新遇到这个错
fatal: Couldn't find remote ref master
fatal: The remote end hung up unexpectedly

或者客户端更新遇到这个错
Your configuration specifies to merge with the ref 'refs/heads/master'
from the remote, but no such ref was fetched.

请不要慌乱 曾经我在这里持续折腾了七个小时 网上查了个底朝天也没查到解决办法
最后找到原因之后 我才明白为什么网上查不到 因为没人有我这么傻逼

原因是没有找到master分支 为什么没有master分支呢 因为master分支是首次提交后创建的 然而我克隆了就直接pull 简直就是脑残 当时我只是想测试一下跑不跑得通。。。

18.一些简单的命令

原来这里写了一些简单的命令 后来我自己都懒得看 因此贴一篇比较详细的资料在文章末尾 方便查阅

19.钩子

切换root账号

su root

vi /var/gitdata/shici.git/hooks/post-receive

输入以下四行内容:

#!/usr/bin/bash

cd /var/www/a

unset GIT_DIR

git pull origin master

(第一行请自行以whereis bash查找一下你服务器上的bash路径,第二行cd进项目目录)

再给个权限:

chmod 755 /var/gitdata/a.git/hooks/post-receive

chown git:git /var/gitdata/a.git/hooks/post-receive

这样客户端提交代码,服务端项目就可以自动更新了,前提是必须切换到git账号手动拉取一下项目,进行一个yes授权记住密码,否则无法自动更新。客户端也一样,所有的基本操作最好先用bash命令行走一圈。

20.禁止登陆shell

vi /etc/passwd

找到git用户那一行 改为:

git:x:1001:1000::/home/git:/usr/bin/git-shell

(最后的路径是你的服务器上git-shell的实际路径)

将来若要添加新仓库

可修改/etc/passwd文件允许git用户登入shell

然后登录git账号做以下操作

1. 切入仓库目录cd /var/gitdata

2. 创建仓库mkdir b.git

3. 初始化仓库git init --bare b.git

4, 创建钩子vi /var/gitdata/b.git/hooks/post-receive

5. 输入以下四行内容
#!/usr/bin/bash
cd /var/www/b
unset GIT_DIR
git pull origin master

6, 修改权限chmod 755 b.git/hooks/post-receive

7. 切进项目目录cd /var/www

8. 如果用的root账号做的这些事情 那么请一定记住把目录所有者设置为git

chown git:git -R /var/gitdata

chown git:git -R /var/www/b

9. 克隆项目git clone git@192.168.11.11:/var/gitdata/b.git

git命令清单:

http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html

免责声明:文章转载自《Git安装配置(完整版)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇git 系列4(文件提交历史)FastDFS安装下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

向 Git 服务器添加 SSH 公钥

在网上很少找到文章有提到如何将自己的 Git 远程仓库配置成可以通过 SSH 公钥方式认证的,而几乎清一色都是告诉你怎么通过 web 界面向 GitHub 添加 SSH 公钥。LZ 在网上查找了一番,终于找到了办法。 对于不想看 LZ 下面罗嗦了一大堆的园友,LZ 先把结论放在这里,直接拿去用就是了。 把本地用户的 ~/.ssh/id_rsa.pub 的内...

[转] SSH两种登录方式(公私钥)解析

转自:https://www.cnblogs.com/hukey/p/6248468.html SSH登录方式主要分为两种: 1. 用户名密码验证方式 说明:   (1) 当客户端发起ssh请求,服务器会把自己的公钥发送给用户;   (2) 用户会根据服务器发来的公钥对密码进行加密;   (3) 加密后的信息回传给服务器,服务器用自己的私钥解密,如果密码...

Oracle 11g RAC INS06006 Passwordless SSH connectivity not set up between the following node(s) 解决方法

一.问题描述        在VBox 上安装Oracle 11.2.0.1 的RAC, 在SSH 配置时报错: INS-06006: Passwordless SSHconnectivity not set up between the following node(s)   注意: 这里奇怪的表现是我们setup是成功,仅仅是Test 失败。 二...

ironic 注入秘钥失败 & 169.254.169.254

grep authorized_keys cloud-init*log 正常请况下 grep authorized_keys cloud-init*log [root@sysu--2 log]# grep centos cloud-init*log 2019-10-22 02:14:17,322 -__init__.py[INFO]: User cen...

hadoop集群的搭建与配置(1)

前言             首先hadoop是在linux系统上进行搭建的,我们首先要在自己电脑上装上虚拟机然后装linux系统,因为我们是测试:在本地虚拟机上装两个linux分别搭建好hadoop环境能实现简单的数据处理就可以了,最终的效果类似于我们c#中的hello world!能做到这里我们的搭建测试环境就算基本上完成了。虚拟机以及linux系统...

sshd_config OpenSSH SSH 进程配置文件配置说明

名称sshd_config – OpenSSH SSH 服务器守护进程配置文件 大纲 /etc/ssh/sshd_config 描述sshd 默认从 /etc/ssh/sshd_config 文件(或通过 -f 命令行选项指定的文件)读取配置信息。配置文件是由”指令 值”对组成的,每行一个。空行和以’#’开头的行都将被忽略。如果值中含有空白符或者其他特殊符...