自己的云服务器搭建git,实现github的功能进行版本控制

如果你自己拥有一台服务器,并且想像github一样使用git来管理您的代码,这时候您就需要在服务器上自己搭建git服务。

一、在云服务器上安装配置git

1,在云服务器上安装git: apt install git

2,创建git用户:useradd git

3,设置git用户的密码passwd git

4,进入git用户目录: cd /home/git

5,递归创建目录及.git文件夹 mkdir -p repository/gittest.git

6,进入 repository目录并初始化项目目录:git init --bare ./gittest.git

7,修改 repository目录的所有者为用户git:chown -R git:git /home/git/repository

二、在客户端生成ssh密钥并配置到云服务器上

1,以windows为例,在windows上安装的git bash客户端中输入ssh-keygen -C '输入描述文字,比如你的邮箱'

2,会提示Enter file in which to save the key,这是要你确定密钥文件保存的位置和名称,这里直接回车即可。

3,接下来的提示你可以全部直接回车。(如果在输入密码的地方输入了密码,以后每次连接都需要输入密码)

4,这时会在windows的默认保存位置有个.ssh的文件夹,生成了两个密钥文件id_rsa和id_rsa.pub

三、在云服务器端继续配置密钥

1,在git用户目录下创建.ssh目录:mkdir .ssh

2,切换在.ssh目录下并创建一个authorized_keys文件,并将客户端生成的id_rsa.pub的文件内容复制到authorized_keys文件中保存

3,设置目录及文件所有者和权限:

i,使用chown git:git .sshchown git:git authorized_keys,修改.ssh和authorized_keys的所有者为git

ii,使用chmod 700 .shhchown 600 authorized_keys,修改.ssh目录权限为700和authorized_keys目录权限为600

四、连接使用

这时你就可以连接云服务器上的gittest.git仓库来上传代码

git clone [email protected]:/home/git/repository/gittest.git

在git bash中使用git ini初始化仓库,生成 .git文件,并配置用户名和邮箱等

git config --global user.name "yourname"

git config --global user.email "[email protected]"

连接远程仓库: git remote add [别名] git@[ip地址或域名]:xxx/xxx.git

git remote add origin [email protected]:/home/git/repository/gittest.git

删除远程连接: git remote remove [别名]

git remote remove origin

在云服务器上创建新的仓库:git init --bare /home/git/repository/shopping.git

创建完成之后就可以使用git remote add来连接

然后就可以使用git add . git commit -m 'xxx' git push origin master来提交你的代码到云服务器上了

五、常见问题

1,在客户端的git bash中报错fatal: Not a git repository (or any of the parent directories): .git

原因:本地没有.git文件夹

解决:使用git init初始化即可

2,报错 fatal: 'xxx(你的仓库别名)' does not appear to be a git repositoryfatal: Could not read from remote repository.gh下面还有Please make sure you have the correct access rights and the repository exists.

原因:这是让你查看目标仓库是否存在,并且密钥配置的正确

解决:你可以检查本地的id_rsa.pub文件内容和云服务器上的authorized_keys文件内容是否一致。也可以重新使用命令ssh-keygen -C '输入描述文字,比如你的邮箱' 生成新的密钥并配置

3,在git push origin master时报错[remote rejected] master -> master (n/a (unpacker error))

原因:所有者权限问题

解决:ls -al 查看git库的所有者,比如查看上面的gittest.git是否属于git用户的,不是需要使用chown -R git:gittest.git修改

最后,结果觉得有用,还请您点个赞吧~~

猜你喜欢

转载自blog.csdn.net/qq_37140721/article/details/129747251