当前位置: 首页 > article >正文

ubantu git

#安装git
1、更新包列表
$ sudo apt-get update
2、install git server
$ apt install git-core
3.create user of git manage
$ adduser git
4.创建仓库并设置权限
$ mkdir -p /home/git/repositories
$ chown git:git /home/git/repositoies
5.初始化仓库并配置所属权限
$ cd /home/git/repositories
$ git init --bare myproject.git
$ chown -R git:git myproject.git
6.为git用户配置ssh公钥
$ vim /etc/ssh/sshd_config
RSAAuthentication yes
PubkeyAuthentication yes
或编辑 /etc/passwd中git用户shell登录为/usr/bin/git-shell:
$ vim /etc/passwd
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
7.重启ssh服务
service ssh restart
克隆:git clone git@ip:/home/git/repositories/myproject.git
***********
自动部署
1git服务器仓库目录中,找到git仓库下hooks目录
2.创建post-receive
#!/bin/bash

# 定义变量
GIT_REPO=$PWD
DEPLOY_PATH=/path/to/your/deploy/directory # 替换为你的部署路径
BRANCH=master # 替换为你想要自动部署的分支名称

# 遍历推送的引用
while read oldrev newrev refname
do
    # 检查是否是推送到指定分支
    if [ "$refname" = "refs/heads/$BRANCH" ]; then
        echo "Ref $refname received. Deploying $BRANCH branch to $DEPLOY_PATH..."
        
        # 切换到部署目录
        cd $DEPLOY_PATH || exit
        
        # 清理旧的工作目录(可选)
        # rm -rf *
        
        # 拉取最新代码到部署目录(使用 git archive 或 checkout --work-tree)
        # 注意:由于这是一个裸仓库,它没有工作目录,所以我们不能直接在这里使用 git pull
        # 我们可以使用 git archive 来解压缩代码,或者使用 --work-tree 选项来指定一个工作目录
        # 这里我们使用 --work-tree 选项
        git --work-tree=$DEPLOY_PATH --git-dir=$GIT_REPO checkout -f $BRANCH
        
        # 可选:执行其他部署操作,如安装依赖、构建项目、重启服务等
        # 例如:npm install(针对 Node.js 项目)
        # 或者:mvn clean install(针对 Java Maven 项目)
        # 或者:systemctl restart your-service(重启服务)
        
        echo "Deployment completed."
    fi
done
***********

***客户端生成ssh密钥对,打开Git Bash或其他终端,通常生成于~/.ssh/is_rsa.pub
$ ssh-keygen -t rsa -b 4096 -C "email@example.com"
*把生成的公钥复制到Git服务器用户账户中SSH秘钥部分:~/.ssh/authorized_keys
*客户端测试ssh连接:$ ssh -T git@git服务器地址 成功:欢迎信息,否则失败
***
客户端配置开发者信息
git config --global user.email "email@163.com"
git config --global user.name "name"

#查看提交记录
*基本显示:git log 所有提交记录,从开始按时间顺序显示:哈希值、作者姓名、提交日期、消息
*简介显示:git log --oneline 仅显示哈希值、提交信息
*按作者过滤:git log --author="用户名"
*图形显示:git log --graph 仅显示分支合并、分支拓扑结构
*查看详细信息:git log -p
*统计信息:git log --stat
*结合使用:
你可以结合使用多个参数来定制输出。例如,要以图形的形式以及一行的简洁方式显示提交记录,并显示每个提交的短哈希值和提交消息,可以使用:git log --graph --oneline --abbrev-commit
*使用哈希值查看特定提交:
如果你知道某个提交的哈希值(或部分哈希值),可以使用 git show 命令来查看该提交的详细信息:git show commit_hash

#同时拉取两个远程仓库
1、初始化本地仓库
2、添加远程仓库
$ git remote add 远程仓库名/匿名 远程仓库地址
*删除远程仓库地址:
git remote remove origin
git remote rm origin
例如:
$ git remote add origin git@github.com:usergit/*.git
$ git remote add gitee git@gitee.com:usergit/*.git
3.拉取远程仓库
$ git fetch origin
$ git fetch gitee
4.查看本地与远程仓库分支差异
$ git diff origin/分支名
$ git diff gitee/分支名
5.合并差异到本地分支
$ git merge origin/分支名
推送远程
$ git push origin 分支名
#方法二:
1.克隆第一个仓库
$ git clone <repository-url-1>
2.进入新克隆仓库目录
$ cd repository-name
3.添加第二仓库(可取别名)如:origin2
$ git remote add origin2 <repository-url-2>
4.拉取第二仓库代码
$ git fetch origin2
5.设置追踪远程仓库的特定分支
$ git branch --set-upstream-to=origin2/分支名 本地分支名
6.拉取每个仓库更新
$ git pull origin
$ git pull origin2

配置多个推送地址(改变了git默认行为,可能出错):
$ git remote set-url --add --push origin https://github.com/username/your-repo.git
$ git remote set-url --add --push origin https://gitlab.com/username/your-backup-repo.git
$ git push origin branch-name
不支持配置多个拉取地址,可如下:
$ git config --global alias.fetch-all '!git fetch origin && git fetch upstream'

tag标签:
轻量级标签 不指定commit则默认HEAD
$ git tag 标签名 <commit>
$ git tag v1.0 默认
带注释标签 不指定commit则默认HEAD
$ git tag -a <标签名> -m '标签信息' <commit>
git tag -a v1.0 -m '版本信息'
#查看标签
列出所有标签:$ git tag
列出符合特定模式标签:git tag -l “v*”
#推送标签
*默认情况不会推送标签到仓库,需要显示地推送
*推送单个标签
git push origin <tagname>
*推送所有标签:
git push origin --tags
#删除标签
*删除本地标签
git tag -d <tagname>
*删除远程标签(1先删除本地tag再推送更新)
git push origin <tagname>
或执行如下删除远程标签:
git push origin :refs/tags/<tagname>
*git 2.23+
git push origin --delete <tagname>
#检出标签
可查看标签所执指向的提交
git checkout <tagname>

git switch --detach <tagname>

##检出tag对应的提交
git checkout tags/<tagname>
部署:
*克隆并进入项目目录:
$ git fetch --all --tags
$ git checkout tags/<tagname>
#回滚
git reflog查看最近操作(含切换分支/检出tag的记录)
git checkout 分支名
或丢弃所有未提交更改:git reset --hard HEAD……


http://www.kler.cn/a/392178.html

相关文章:

  • 以色列支付龙头遭DDoS攻击,各地超市加油站等POS机瘫痪
  • 应用程序部署(IIS的相关使用,sql server的相关使用)
  • JavaScript高级程序设计基础(四)
  • Chrome使用IE内核
  • 6.2 对角化矩阵(2)
  • 前端知识点---Javascript的对象(Javascript)
  • 回溯算法(组合问题)-- 游戏分组
  • btstack协议栈实战篇--HID Keyboard Classic
  • 预处理、编译、汇编和链接
  • 力扣 二叉树的直径-543
  • 详解Gemini API的使用:在国内实现大模型对话与目标检测教程
  • SpringBoot 实战:文件上传之秒传、断点续传、分片上传
  • 比速M3比速T3比速T5北汽制造007 勇士 锐铃维修手册电路图资料更新线路接线
  • 高效编程训练:Spring Boot系统设计与实践
  • 试用免费界面美化程序SeelenUI,让你的Windows变得更美
  • Spring 解析xml中的 BeanDefination 大概过程
  • 每日一练:二分查找-x的平方根
  • Unity3D学习FPS游戏(11)敌人AI巡逻(NavMesh)
  • C++多态及其在设计模式中的作用举例
  • 【webrtc】 RTP 中的 MID(Media Stream Identifier)
  • Spring Boot编程训练系统:构建企业级应用
  • 基于BILSTM及其他RNN序列模型的人名分类器
  • 革新农业未来!Dimitra生态币价双双腾飞在即
  • AI 大模型在软件开发中的角色
  • IntelliJ IDEA 启动报 Unsupported Java Version
  • HTTP 客户端怎么向 Spring Cloud Sleuth 传输跟踪 ID