1.准备环境
搭建Git服务器需要一台准备了Linux系统的机器(虚拟机或阿里云服务器等等)
强烈推荐使用Ubuntu,CentOS
在root(管理员用户)的环境下,正式开始安装:
注:以下都是在root账户下进行
1. 安装git
`yum install git`
安装完成之后可以使用 `git`查看
[root@admin ShellTest]# git
usage: git [--version] [--help] [-c name=value]
[--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
[-p|--paginate|--no-pager] [--no-replace-objects] [--bare]
[--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
<command> [<args>]
最常用的 git 命令有:
add 添加文件内容至索引
bisect 通过二分查找定位引入 bug 的变更
branch 列出、创建或删除分支
checkout 检出一个分支或路径到工作区
clone 克隆一个版本库到一个新目录
commit 记录变更到版本库
diff 显示提交之间、提交和工作区之间等的差异
fetch 从另外一个版本库下载对象和引用
grep 输出和模式匹配的行
init 创建一个空的 Git 版本库或重新初始化一个已存在的版本库
log 显示提交日志
merge 合并两个或更多开发历史
mv 移动或重命名一个文件、目录或符号链接
pull 获取并合并另外的版本库或一个本地分支
push 更新远程引用和相关的对象
rebase 本地提交转移至更新后的上游分支中
reset 重置当前HEAD到指定状态
rm 从工作区和索引中删除文件
show 显示各种类型的对象
status 显示工作区状态
tag 创建、列出、删除或校验一个GPG签名的 tag 对象
命令 'git help -a' 和 'git help -g' 显示可用的子命令和一些指南。参见
'git help <命令>' 或 'git help <指南>' 来查看给定的子命令帮助或指南。
2. 创建一个git用户(也可以自己取名)
adduser git
注:
使用adduser时,创建用户的过程更像是一种人机对话,系统会提示你输入各种信息
使用useradd,你可以添加各种参数
3. 创建证书登录:
切换到git
的家目录
[root@bogon /]# cd ~git
[root@bogon git]#
在刚刚创建的git
家目录home
中
mkdir .ssh
[root@bogon git]# mkdir .ssh
[root@bogon git]# ll -al
总用量 12
drwx------. 4 git git 90 7月 30 10:54 .
drwxr-xr-x. 7 root root 77 7月 30 10:42 ..
-rw-r--r--. 1 git git 18 4月 1 2020 .bash_logout
-rw-r--r--. 1 git git 193 4月 1 2020 .bash_profile
-rw-r--r--. 1 git git 231 4月 1 2020 .bashrc
drwxr-xr-x. 4 git git 39 7月 21 10:17 .mozilla
drwx------. 2 git git 29 7月 30 10:49 .ssh
进入新创建的.ssh
目录后创建authorized_keys
文件
authorized_keys
文件主要存放用户的公钥
收集所有需要登录的用户的公钥,就是id_rsa.pub文件(/用户家目录/.ssh/id_rsa.pub
)
把所有公钥导入到/home/git/.ssh/authorized_keys文件里
查看用户公钥
[root@admin /]# cd ~ root
[root@admin ~]# cd .ssh
[root@admin .ssh]# cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDr33+shQDZTW1xLfiIEDfiNfV4kUI6FaEpU7Gut3Hb2HgnCrn0hiowq86mMsn32yU67neyTq04leIYHpjSwHZ3fKBGMLUiY3QfF5I3N1aWSbdbjv9ZXdJpCypEC1KB/JoGvHgPvl9dvKIrPBWWaAeZVFHIivXyehmjZzv2gkMLZnSpc0CWPXJajq34sgB8ejt9G0dCM4S8sQbqVqkNRrZUNP8kflDHxD6SjVaMF7uuzh3mDJakrpnmE0yfsK6/SHiySnTRSXwyGkYuQqQghtX/Y3zqm/d/WFOVLtVdtGXFbN1Y/+fTzu/YIFTfaBZiOSw7u4ywsCL31mAa0CdQqYzR 562139661@qq.com
若无公钥,则创建后再查看:
ssh-keygen -t rsa -C "youremail@example.com"
将公钥放入authorized_keys
文件
[root@bogon .ssh]# cat authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDr33+shQDZTW1xLfiIEDfiNfV4kUI6FaEpU7Gut3Hb2HgnCrn0hiowq86mMsn32yU67neyTq04leIYHpjSwHZ3fKBGMLUiY3QfF5I3N1aWSbdbjv9ZXdJpCypEC1KB/JoGvHgPvl9dvKIrPBWWaAeZVFHIivXyehmjZzv2gkMLZnSpc0CWPXJajq34sgB8ejt9G0dCM4S8sQbqVqkNRrZUNP8kflDHxD6SjVaMF7uuzh3mDJakrpnmE0yfsK6/SHiySnTRSXwyGkYuQqQghtX/Y3zqm/d/WFOVLtVdtGXFbN1Y/+fTzu/YIFTfaBZiOSw7u4ywsCL31mAa0CdQqYzR 562139661@qq.com
4.初始化git仓库:
选定一个目录作为git的仓库,假定为/srv/sample.git,在srv目录下输入一下命令:
git init --bare sample.git
(sample.git为库名)
[root@bogon srv]# git init --bare sample.git
[root@bogon srv]# ll
总用量 0
drwxr-xr-x. 7 root root 119 7月 30 10:46 sample.git
重点!重点!重点!
需要满足三个条件:
服务器上.ssh的目录权限必须是700
服务器上.ssh/authorized_keys文件的权限必须是600
git家目录下所有文件拥有者和群组都必须是git(包括.和…)
主要修改命令为:
chmod 700 .ssh
chmod 600 authorized_keys
chown -R git:git .ssh
chown -R git:git ..
5.禁用Shell登录
处于安全考虑,git用户不允许登录Shell,这里可以通过编辑服务器里的/etc/passwd
完成
git:x:1001:1001:,,,:/home/git:/bin/bash
改成:
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
这样,git用户可以正常通过ssh使用git,但无法登录shell,因为我们为git用户指定的git-shell每次一登录就自动退出
6.克隆远程仓库
这样我们就可以在克隆服务器远程仓库了,使用git clone
git clone git@server:/srv/sample.git
克隆之后的样子:
[root@admin GitDepository01]# ll
总用量 0
drwxr-xr-x. 3 root root 36 7月 30 11:59 sample
可以在里面进行读写操作,已经自动帮sample
文件git init
要推送到服务器远程仓库的话
需要连接远程库:git remote add orgin git@server:/srv/sample.git
再进行:git push orgin master
特殊情况:
创建完后使用git branch
无分支
这时你只需要随便vi 文件名
,然后依次使用git add 文件名
,git commit -m "example script"
正常添加和提交文件
再使用git branch
就可以正常见到master分支了
[root@admin sample]# git branch
* master