一直在用Git,又买了台服务器,之前尝试搭建gitlab,但是服务器配置太低,不能运行gitlab,后来就用ssh搭建一个仓库
一. 直接运行ssh上传git仓库
云端服务器操作
仓库初始化
创建git文件夹并运行
git init --bare
一定要加
--bare
,不然不能推送上来创建文件夹【可选】
创建一个存放上传文件的文件夹,
也可以不创建,这样就只有git索引文件夹,下面几步就不用看了
配置钩子脚本
脚本名称为
post-receive
脚本存放路径
[git文件夹]/hooks/
脚本内容如下
1
2#!/bin/sh
git --work-tree=/home/kg_ali/[存放文件夹] --git-dir=/home/kg_ali/[git文件夹] checkout -f本地仓库操作
添加远程地址
git add remote kg_ali kg_ali:/home/kg_ali/[git文件夹]
请自行替换
kg_ali
[git文件夹]
推送到远程
这部分与github的操作基本相同
git push kg_ali master
二、使用脚本
由于仓库太多,每次都要创建文件夹与文件,太过于繁琐,就编写了一个脚本文件
脚本内容如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47#!/bin/sh
work_tree_DIR_name=$1
git_DIR_name="./git_lib/"$work_tree_DIR_name
# 判断输入的参数个数
if [ $# -eq 0 ];then
echo "no param"
echo "请输入创建的Git仓库名称"
return
fi
echo "正在创建[文件存放]文件夹 "$work_tree_DIR_name
# 判断文件夹是否存在
if [ ! -d $work_tree_DIR_name ];then
mkdir $work_tree_DIR_name
else
echo "[文件存放] 文件夹已存在"
return
fi
echo "正在创建[Git 仓库]文件夹 "$git_DIR_name
if [ ! -d $git_DIR_name ];then
mkdir $git_DIR_name
else
echo "[Git 仓库] 文件夹已存在"
return
fi
# 执行 git 命令
cd $git_DIR_name
git init --bare
touch ./hooks/post-receive
echo "#!/bin/sh" > "./hooks/post-receive"
echo "git --work-tree=/home/kg_ali/TASI/"$work_tree_DIR_name \
" --git-dir=/home/kg_ali/TASI/git_lib/"$work_tree_DIR_name " checkout -f"\
>> "./hooks/post-receive"
sudo chmod 777 ./hooks/post-receive
# 结束
CURRENT_DIR=$(pwd)
echo "您可以使用一下命令将仓库推送到远程,请切换到本地文件执行"
echo "git init "
echo "git add . "
echo "git commit -m 'init'"
echo "git remote add kg_ali kg_ali:"$CURRENT_DIR
echo "git push kg_ali master"
请自行修改目录路径
三、出现的问题
bad interpreter:No such file or directory
注意文件编码问题
error: 远程解包失败:unable to create temporary object directory
运行脚本的时候不能使用
sudo
命令,否则远程地址要使用root
用户