ubantu git

news/2024/11/8 12:22:34 标签: git, elasticsearch, 大数据

#安装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.niftyadmin.cn/n/5743888.html

相关文章

[asdf] 管理erlang 版本--ubuntu 16.04

部分网址 asdf 官网&#xff1a;快速入门 | asdf elang 插件网址&#xff1a;https://github.com/asdf-vm/asdf-erlang rebar 插件网址&#xff1a;https://github.com/Stratus3D/asdf-rebar 安装asdf 先安装依赖,默认装了git 可只安装curl apt install curl git 2、安装as…

【Linux系统编程】第四十三弹---多线程编程指南:线程终止方式与C++11中的thread

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】 目录 1、线程终止 1.1、pthread_exit() 1.2、pthread_cancel() 1.3、pthread_detach() 2、C11中thread 1、线程终止 问题7 …

Caused by: org.apache.flink.api.common.io.ParseException: Row too short:

Flink版本 1.17.2 错误描述 Caused by: org.apache.flink.api.common.io.ParseException: Row too short: 通过flink中的flinkSql直接使用对应的connector去获取csv文件内容&#xff0c;报获取的数据太短了 可能原因 1.创建的表字段多于csv文件当中的表头 定位 在获取csv…

ReactPress:深入解析技术方案设计与源码

ReactPress Github项目地址&#xff1a;https://github.com/fecommunity/reactpress 欢迎提出宝贵的建议&#xff0c;欢迎一起共建&#xff0c;感谢Star。 ReactPress是一个基于React框架开发的开源发布平台&#xff0c;它不仅仅是一个简单的博客系统&#xff0c;更是一个功能全…

5G网卡network connection: disconnected

日志 5G流程中没有报任何错误&#xff0c;但是重新拿地址了&#xff0c;感觉像是驱动层连接断开了,dmesg中日志如下&#xff1a; [ 1526.558377] ippassthrough:set [ ip10.108.40.47 mask27 ip_net10.108.40.32 router10.108.40.33 dns221.12.1.227 221.12.33.227] br-lan […

大语言模型训练的全过程:预训练、微调、RLHF

一、 大语言模型的训练过程 预训练阶段&#xff1a;PT&#xff08;Pre training&#xff09;。使用公开数据经过预训练得到预训练模型&#xff0c;预训练模型具备语言的初步理解&#xff1b;训练周期比较长&#xff1b;微调阶段1&#xff1a;SFT&#xff08;指令微调/有监督微调…

python获取iOS最近业务日志的两种方法

当iOS UI自动化用例执行失败的时候&#xff0c;需要获取当时的业务日志&#xff0c;供后续分析使用。 现在已经把iOS沙盒目录挂载到本地&#xff0c;剩下的事情就是从沙盒目录中捞取当前的日志&#xff0c;沙盒中的日志文件较大&#xff0c;整体导出来也可以&#xff0c;但是会…

TensorFlow|咖啡豆识别

&#x1f368; 本文为&#x1f517;365天深度学习训练营中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 &#x1f37a; 要求&#xff1a; 自己搭建VGG-16网络框架调用官方的VGG-16网络框架 &#x1f37b; 拔高&#xff08;可选&#xff09;&#xff1a; 验证集准…