Ubuntu git 仓库搭建及代码上传

Ubuntu git 仓库搭建及代码上传

git 仓库服务器搭建

1.安装 git

首先在服务器上安装 git

sudo apt-get install git

2.创建 git 账户

接下来得创建一个专门用来进行 git 仓库版本控制的 Linux 用户,为了方便,这里建议切换到 root 用户 (下面的所有操作都是在 root 账户下完成)

sudo -i adduser git

接下来会要求输入密码等信息,直接按照提示输入即可。

3.创建登录证书

为了保证仓库的安全性,必须得要求登录仓库时使用密钥登录。首先执行下面的命令创建密钥的存放路径:

cd /home/git/
mkdir .ssh
chmod 755 .ssh
touch .ssh/authorized_keys
chmod 644 .ssh/authorized_keys

接下来收集所有需要登录的用户的公钥,就是他们自己的 id_rsa.pub 文件,把所有公钥导入到 /home/git/.ssh/authorized_keys 文件里,一行一个。

4.禁用 git 用户 shell 登录

出于安全考虑,创建的 git 用户是不允许登录 shell 的

vi /etc/passwd

找到 passwd 文件中的:

git:x:1003:1004:,,,:/home/git:/bin/bash

将其修改为:

git:x:1003:1004:,,,:/home/git:/usr/bin/git-shell

这样,git 用户可以正常通过 ssh 使用 git ,但无法登录 shell,因为我们为 git 用户指定的 git-shell 每次一登录就自动退出。

5.初始化 git 仓库

首先创建一个空的文件夹来作为 git 仓库的目录,这里选择在 /home 目录下创建,文件夹名根据实际项目来起,这里使用 gitproject:

cd /home
mkdir gitproject

为 gitproject 指定用户和用户组:

chown git:git gitproject

之后进入该文件夹下创建一个新的裸仓库:

cd gitproject
git init --bare gitproject.git

–bare 是指定创建一个裸仓库,裸仓库表示在服务器不存储代码,只存储版本更改信息,因此在服务器看不到对应的项目代码,而且这里必须创建一个裸仓库,否则 push 项目到服务器的时候会报错

新建了一个裸仓库之后还得将其对应的用户和用户组更改为 git:

chown -R git:git gitproject.git

6.克隆仓库

接下来就可以在客户端克隆服务器的项目了

git clone git:server-ip:/home/gitproject/gitproject.git

此时会提示克隆了一个空的项目

接下来就可以在客户端写入一些文件 commit 到 git 服务器上去了。

这里有关的 git 操作推荐去看: git - 简明指南

git 客户端设置及代码提交

1.安装 git 应用

这里直接到 git 官网下载对应操作系统版本的软件安装就好:

2.git 账户配置

首先设置 git 的 user name 和 email:

git config --global user.name "username"
git config --global user.email "email@qq.com"

接下来生成对应的密钥:

ssh-keygen -t rsa -C "email@qq.com"

3.密钥使用

创建好密钥之后可以将公钥保存到 git 服务器的 authorized_keys 中使其可以访问 git 服务器,或者填写到 github 上,来向 github 上传项目。

密钥的位置:

  • Linux/Mac:~/.ssh/id_rsa.pub
  • windows:C:/User/Administrator/.ssh/id_rsa.pub(在安装git时指定)

4. 本地代码提交

有两种方式:

  1. 先将服务器建立的空仓库 clone 到本地,然后添加并提交本地文件
  2. 本地先建立代码仓库,然后关联本地仓库和服务器建立的仓库,然后提交文件

添加文件,并提交到本地都一样:

准备好需要提交的文件,为了将空目录添加到 git 仓库,需要在空目录下创建 .gitkeep 文件, 忽略 .git 目录

find . -type d -empty -not -path './.git*' -exec sh -c 'test -z "$(git ls-files "{}")" && touch "{}/.gitkeep"' \; -print

在源码跟目录下添加所有文件并提交

git add .; git commit -m "init commit"

关联本地仓库和远程仓库

cd /path/to/your/local/repository
git remote add origin git@192.168.2.2:/path/to/my_project.git

将本地代码推送到服务器

git push -u origin master