DevOps系列文章之 Git知识大全

常用命令

其他参数 --inital-branch 初始化的分支 --bare 创建一个裸仓库(纯 Git 目录,没有工作目录) --template 可以通过模板来创建预先建好的自定义 git 目录

常见 Git 配置

用户名配置

git config --global user.name "yourname" git config --global user.email yourname@xx.com

instead of 配置

git config --global url.github.com:.insteadOf github.com/

Git 命令别名配置

git config --global alias.cin "commit --amend --no-edit"

Git Remote

查看 Remote

git remote -v

添加 Remote

git remote add orgin_ssh git@github.com:git/git.git git remote add orgin_http github.com/git/git.gii...

HTTP Remote

URL:github.com/git/git.git 免密配置 内存:git config --global credential.helper 'cache --timeout=3600' 硬盘:git config --global credential.helper "store --file/path/to/credential-file" 不指定目录的情况默认是 ~/.git-credentials

将密钥信息存在指定文件中 具体格式:scheme://{scheme}://scheme://{user}:${password}@github.com

SSH Remote

URL:git@github.com:git/git.git 免密配置 SSH 可以通过公司钥的机制,将生成公钥存放在服务端,从而实现免密访问

目前的 Key 类型四种,分别是 dsa、rsa、ecdsa、ed25519 默认使用的是 rsa,由于一些安全问题,现在已经不推荐使用 dsa 和 rsa 了,优先推荐使用 ed25519 ssh-keygen -t ed25519 -C "your_email@example.com" 密钥默认存在 ~/-ssh/id_ed25519.pub

Objects

commit / tree / blob 在 git 里面走统一称为 Object,除此之外还有个 tag 的 object. Blob:存储文件的内容 Tree:存储文件的目录信息 Commit:存储提交信息,一个 Commit 可以对应唯一版本的代码

如何把这三个信息串联在一起? 1、通过 Commit 寻找到 Tree 信息,每一个 Commit 都会存储对应的 Tree ID。 2、通过 Tree 存储的信息,获取到对应的目录树信息。 3、从 Tree 中获得 blob 的 ID,通过 Blob ID 获取对应的文件内容。

Refs

Refs 文件存储的内容 refs 的内容就是对应的 Commit ID 因此把 ref 当做指针,指向最硬的 Commit 来表示当前 Ref 对应的版本。

不同种类的 ref

refs/heads 前缀表示的是分支,除此之外还有其他种类的 ref,比如 refs/tags 前缀表示的是标签。

Branch

git cheakout -b 可以创建一个新分支 分支一般用于开发阶段,是可以不断添加 Commit 进行迭代的

Tag

标签一般表示的是一个稳定版本,指向的 Commit 一般不会变更 通过 git tag 命令生成 tag。

Annotation Tag

什么是附注标签? 一种特殊的 Tag,可以给 Tag 提供一些额外的信息。 如何创建附注标签? 通过 git tag -a 命令来完成附注标签的创建。

Git GC

通过 git gc 命令,可以删除一些不需要的 object,以及会对 object 进行一些打包压缩来减少仓库的体积。

Reflog

reflog 是用于记录操作日志,防止误操作后数据丢失,通过 reflog 来找到丢失的数据,手动将日志设置为过期。 指定时间 git gc prune=now 指定的是修剪多久之前的对象,默认是两周前。

Git Clone & Pull & Fetch

Clone

拉取完整的仓库到本地目录,可以指定分支,深度。

Fetch

将远端某些分支最新代码拉取到本地,不会执行 merge 操作,会修改 refs/remote 内的分支信息,如果需要执行和本地代码合并需要手动操作。

Pull

拉取远端某分支,并和本地代码进行合并,操作等于 git fetch + git merge,也可以通过 git pull --rebase 完成 git fetch + git rebase 操作。

可能存在冲突,需要解决冲突。

Git Push Push 是将本地代码同步至远端的方式。 常见命令 一般使用 git push orgin master 命令即可完成 冲突问题 1、如果本地的 commit 记录和远端的 commit 历史不一致,则会产生冲突,比如 git commit --amend or git rebase 都有可能导致这个问题。 2、如果该分支就自己一个人使用,或者团队确认过可以修改历史则可以通过 git push orgin master --f 来强制推送,一般不推荐主干分支进行该操作,正常都应该解决冲突后再进行推送。 推送规则限制 可以通过保护分支,来配置一些保护规则,防止误操作,或者一些不合规的操作出现,导致代码丢失。

相关推荐
一勺-_-4 小时前
.git文件夹
大数据·git·elasticsearch
一水鉴天5 小时前
整体设计 定稿 之23 dashboard.html 增加三层次动态记录体系仪表盘 之2 程序 (Q199 之1)
人工智能·架构·自动化
TT哇5 小时前
【git】本地代码上传到gitee仓库(保姆级教程)idea和vscode等通用
git·gitee·intellij-idea
人在旅途我渐行渐远6 小时前
idea 通过git撤销commit但未push的操作
java·git·intellij-idea
Serene_Dream6 小时前
IDEA中多人项目中如何将自己的本地分支调整到远程的最新分支下
git·github
中冕—霍格沃兹软件开发测试6 小时前
Git版本控制在测试项目管理中的应用
人工智能·git·科技·开源·appium·bug
HIT_Weston7 小时前
61、【Ubuntu】【Gitlab】拉出内网 Web 服务:Gitlab 配置审视(五)
前端·ubuntu·gitlab
嘻哈baby8 小时前
Ansible自动化运维入门:从手工到批量部署
运维·自动化·ansible
科立分板机源头厂家9 小时前
第51集科立分板机:选择适合PCB板切割的全自动激光分板机?
自动化·分板机·激光分板机·科立分板机·pcb分板机
测试人社区-小明10 小时前
洞察金融科技测试面试:核心能力与趋势解析
人工智能·科技·面试·金融·机器人·自动化·github