git仓库的使用

一、安装git

直接通过apt-get安装git。

apt-get install git -y

1.1 创建git用户

创建git账号并登录,指定用户目录为/home/git

user add git -d /home/git -m -s /bin/bash

su git

添加用户 user add

-d: 指定用户目录

-m: 如果目录不存在则创建

-s: 可以指定用户使用的命令

二、创建sample库

需使用--bare 参数。作为代码仓库服务器并不会在上面修改东西。

git init --bare sampe.git

三、设置SSH Key做免密

收集客户端公钥,复制到服务器上。数字签名文件id_rsa.pub.ssh用户目录中。通常情况下windows在用户(一般都是 Administrator)下的 .ssh 文件夹中,Mac在~/.ssh目录中。

生成本地用户的签名文件,并把客户端上公钥导入到服务器上.

现有两个客户端的key文件mymac.pubmywin.pub导入。

ssh-keygen -t rsa

cat mymac.pub >> ~/.ssh/authorized_keys

cat mywin.pub >> ~/.ssh/authorized_keys

3.1 客户端获取sample库,并添加文件上传到服务器

Windows上可以直接使用git获取。

git@服务器地址:/钩子文件的路径.git

新建一个文件并提交到服务器上。在服务器上通过git log就能看到第二提交的内容。

这样Git服务器仓库就搞定了。

四、安全

为安全考虑Git账号只允许使用git-shell。在passwd文件中找到git用户,把/bin/bash直接修改成/usr/bin/git-shell 登录root账号,并修改git的用户权限。

su

vim /etc/passwd

这样git用户只能git-shell命令不能登录了。

使用su git命令就会出现下面提示,git用户就无法登录到shell,这样就OK了。

五、hexo博客的额外配置

在var目录下创建repo作为git仓库目录,以及给予权限

mkdir /var/repo

创建一个目录来作为hexo网站根目录,并给予权限

mkdir /var/hexo

chown -R git:git /var/hexo

chmod -R 755 /var/hexo

权限部分很重要,否则在后续Windows端推送时会报错权限不够

remote: error: unable to unlink old '<file>' (Permission denied)

5.1 自动部署配置

接3.1后,进入钩子文件cd /var/repo/simple.git下有一个自动生成的hooks文件夹。我们需要在里边建一个新的钩子文件post-receive。

vim /var/repo/simple.git/hooks/post-receive

将下面两行代码粘贴进去保存退出。

#!/bin/bash
git --work-tree=/var/hexo --git-dir=/var/repo/simple.git checkout -f

修改权限

chown -R git:git /var/repo/hexo.git/hooks/post-receive
chmod +x /var/repo/hexo.git/hooks/post-receive

这样关于博客的自动部署就搞定了。

六、git使用

  • 拷贝项目:git clone <仓库地址>

  • 创建分支:git branch <name>

  • 创建并进入分支:git checkout -b <name>

  • 查看状态:git status

  • 添加所有文件:git add .

  • 提交:git commit -m '这里填提交的描述信息'

  • 拉取:git pull

  • 推送:git push

  • 查看分支:git branch -list

  • 查看分支(含远程分支):git branch -a

工作中项目分支管理

master:主分支,一般都不会在此分支开发项目

dev:开发分支,一般在此分支上开发

版本分支:建立于dev分支下面

如:feature-vueAdmin-V1.0.0-20230611

  • feature:描述当前分支类型

  • vueAdmin:项目名称

  • V1.0.0:版本号

  • 20230611:建立分支日期

BUG分支:建立于当前版本分支下

如:bur-101112-20230611

  • bug:分支类型

  • 101112:bug的ID

  • 20230611:建立分支的日期

小知识

1.git工作流程

首先执行 git pull 获取远程仓库的最新代码,进行代码的编写。

完成相应功能的开发后执行 git add . 将工作区代码的修改添加到暂存区,再执行 git commit -m 完成xx功能 将暂存区代码提交到本地仓库并添加相应的注释,最后执行 git push 命令推送到远程仓库。

2.撤回提交到仓库的代码

当执行了 git commit -m 注释内容 命令想要撤回,可以使用 git reset --soft HEAD^ 把本地仓库回退到当前版本的上一个版本,也就是刚刚还没提交的时候,代码的改动会保留在暂存区和工作区。

也可以使用 git reset --mixed HEAD^,这样不止回退了刚刚的 git commit 操作,还回退了 git add 操作,代码的改动只会保留在工作区。因为 --mixed 参数是 git reset 命令的默认选项,也就是可以写为 git reset HEAD^

3.撤回发送到远程的代码

当执行了 git push 命令想要撤回,可以使用 git reset HEAD^ 将本地仓库回退到当前版本的上一个版本,代码的修改会保留在工作区,然后使用 git push origin xxx --force 将本地仓库当前版本的代码强制推送到远程仓库。


欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 1701220998@qq.com
导航页 GitHub