安装Git,并在客户端建立一个空项目并克隆

635 阅读1分钟

分两大步,分别在服务器端(虚拟机中的linux)和客户端(真机中的Windows)中操作

一、步骤

1.1 服务器端

1.1.1 先从yum安装Git

$ yum –y install git

1.1.2 在需要的位置创建一个空仓库

(倒数第二级目录有且仅有.Git文件夹)

$ cd /usr/local
$ mkdir git
$ cd git
$ git init --bare learngit.git

1.1.3 创建一个Git用户并赋予密码

$ useradd git
$ passwd git

1.1.4 赋予Git用户权限

$ chown -R git:git learngit.git

1.1.5 禁用Git用户shell登录(一定要禁用)

$ vi /etc/passwd

1.1.6 将Git用户修改为如下(一般在最后一行)

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

其他的不用改,esc键,再输入:wq保存退出。服务端完成。

1.2 客户端

我使用的客户端为Git for Windows

1.2.1 安装,全部直接下一步即可

1.2.2创建用户(进入Git Bash)

$ Git config --global user.name "你的名字"
$ Git config --global user.email "你的邮箱"

1.2.3 进入想要将项目放置的目录

$ cd F:
$ mkdir git
$ cd git

1.2.4 创建秘钥(用来防止每次commit或push都需要密码)

$ ssh-keygen -t rsa -C "你的邮箱" 一直回车(2-3次)

1.2.5 将秘钥加入服务器列表

1.2.5.1 取得公钥(本地)

   在当前目录下(若未改变目录,到C:\Users\Administrator.ssh\id_rsa.pub)找到.ssh目录下的id_rsa.pub文件,使用notepad++或其他软件(如记事本)打开,复制其中内容(类似如下: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDQw54am1KGSyTHujgr1GdvwWA1cZK2PPAVzpK6hXvPKeoAQVR4fmkFVtBQY1+kAMQtuyFD7a4kZOzS8sPju9kDxmqMRhHxO6g9OA6r9BsS1dfmwDxdE7GNpK/t+639XeaKEvs6+BrxqEDc3kTSXyHG+geHO4idxh3e3VUkvejKmICOlMX10IjcZx5aU2kqh3FeSQH/R2YjSArCe7z0mHdZ06F3SPBT72DaJsvezCQ9btRCYANIMK4PXnPT5h2nCu3jQ8cSrzvPpPp6grJIwftFQYbKIyex8AVTaOH2AeIXTCgtD9tPzmx/VwqJS9HLJlQJ0c1p0Sfsl6YJyo6+oaf 你的邮箱    

1.2.5.2将公钥加入服务器列表(服务器)

   CentOS 7默认列表在/root/.ssh/authorized_keys,使用vi 编辑此文件输入刚才复制的内容,保存退出。

$ vi /root/.ssh/authorized_keys
//输入i修改
//按esc后输入:wq保存退出
1.2.5.3 可以跳过此步,若克隆远程项目多次仍然需要密码,则检查上一步是否有错误,没有错误后,在配置这一步(服务器)

   在/home目录下创建.ssh目录,进入,创建authorized_keys文件

$ cd /home
$ mkdir .ssh
$ cd .ssh
$ vi authorized_keys

加入我们的公钥后保存退出。

1.2.6 克隆远程项目(本地)
$ cd F:
$ cd git
//把ip换成自己服务器的
$ git clone git@192.168.187.128:/usr/local/git/learngit.git
Cloning into 'project1'...
git@192.168.187.128's password:
warning: You appear to have cloned an empty repository.
1.2.7 如果需要密码,输入你设置的Git用户密码。

若clone之后commit多此后仍然需要密码,执行5.3,若已经执行,检查公钥是否正确,然后退出Git for windows,再此打开Git for windows克隆。

二、可能出现的问题

2.1 在创建“/root/.ssh/authorized_keys”文件时出现“E212: Can't open file for writing”错误的解决方法。

检查一下.ssh目录是否存在。

2.2 客户端一直连接不上服务器端的解决方法

(如出现以下错误: ssh: connect to host 192.168.1.1 port 22: Connection timed out fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists. )

原因:在客户端输入服务器的ip地址是错误的,或服务器的ssh服务未安装/打开。

解决方法:

1、前者:可通过在Linux中终端输入“ifconfig -a”查看服务器正确的IP地址解决。

2、后者:

(1)登录Centos 7系统。

  使用root用户登录。

 (2)查看SSH是否安装。

  输入命令:rpm -qa | grep ssh

  注:若没安装SSH则可输入:yum install openssh-server安装。   

  (3)启动SSH服务。

  输入命令:systemctl restart sshd 重启SSH服务。

  命令:systemctl start sshd 启动服务 |

命令:systemctl stop sshd 停止服务

重启后可输入:netstat -antp | grep sshd 查看是否启动22端口。

  (4)如何设置SSH服务为开机启动?

  输入命令:systemctl enable sshd 即可。

  注:若是systemctl disable sshd 则禁止SSH开机启动。

2.3 在克隆远程项目时出现“Could not chdir to home directory /home/git: Permission denied”的解决方法。

在服务器端用root账号修改/home/git的权限。

如:$ chmod 775 /etc/git

三、注意

3.1 在克隆远程项目时,若出现”warning: You appear to have cloned an empty repository.”不需要理会(本来创建的就是空项目)。

3.2 服务器端的Git安装后可在终端中用“git --version”检查版本与官网最新的版本是否一致,若不一致,可能是因为默认使用了"/usr/bin"下的Git。

详细操作步骤如下:

(1)安装后,查看版本

$ git --version

可能展示与实际安装版本不符。是因为默认使用了"/usr/bin"下的git

(2)配置环境变量

$ vim /etc/profile

(3)在文件的最后一行,添加下面的内容,然后保存退出。

$ export PATH=/usr/local/git/bin:$PATH

(4)刷新配置文件

$ source /etc/profile

(5)再次查看,

$ git --version

这时候版本查看不一致的问题就解决了。

四、参考链接

CentOS 7 安装Git

linux下安装Git并生成SSH key

CentOS下开启SSH Server服务

git 服务器架设