Git
参考资料
概念
- Git 是一种分布式版本管理工具, 在中央服务器保存所有文件与历史快照的同时, 每次建立分支都克隆整个仓库
- Git 中所有的数据在存储前都计算校验和, Git 数据库中保存的信息都是以文件内容的 SHA-1 哈希值来索引
- Git 有三种状态 modified staged committed 对应工作区 暂存区 (只是索引) 以及 Git 目录
~/.gitconfig 配置忽略文件
~/.config/git/config 配置文件
- 安装完 Git 之后, 要做的第一件事就是设置你的用户名和邮件地址
git --version # 看一眼
git config --global user.name "Your Name Here"
git config --global user.email "your_email@youremail.com"
# 设置 name & email
git config --global credential.helper osxkeychain
# 设置缓存凭据工具
Git 基本操作
创建, 提交, 配置
git init 在当前目录建立 .git 初始化
git clone <url> name 克隆到当前目录, name 可选
git status 检查文件状态
git add name 跟踪并暂存新文件, 暂存已修改文件, 暂存只保存当前版本, 未提交之前再次修改, 需要再次暂存
git status -s 检查文件状态, 只显示简短信息
.gitignore 指明需要忽视的文件, 标准的 glob 模式匹配, 递归地应用在整个工作区中
git diff 比较工作目录中当前文件和暂存区域快照之间的差异
git diff -staged 将比对已暂存文件与最后一次提交的文件差异
git commit 将提交修改并调用 shell 的默认编辑器写提交消息 -a 自动 add 并提交
撤销
git rm name 删除文件
git mv 相当于重命名
git log 看历史更改提交人, mail, 提交消息
git reset --soft name 回退版本, 保留工作区, 保留暂存区
git reset --hard name 都不保留
git reset --mixed name 保留工作区, 不保留暂存区
git checkout -- rope_name 用仓库中的版本替换
仓库
git remote -v 看仓库
git remote add <shortname> <url> 添加一个新的远程 Git 仓库, 可以用 shortname 代替该仓库 url
git fetch <url> 拉取差异, 但是不自动合并
git pull <url> 并且自动合并
git push origin master 推送到某仓库某分支, 这是默认的 name
git remote show <remote> 看仓库信息
git remote rename 重命名
git remote rm 删除仓库
分支
git branch name 建立分支
git branch 列出分支
git checkout testing 移动到该分支
git merge hotfix 将当前分支和某分支合并
git banch --merged 列出已合并的分支
git branch -d name 删除分支
git branch -m old new 重命名分支
git checkout -b sf origin/serverfix 从远程分支创建跟踪并切换到新分支
git push origin --delete serverfix 删除远程分支
git rebase master serverfix 合并分支 (变基)
标签
git tag name 打标签, 默认为 HEAD, 也可以指定提交
- HEAD 指向当前分支的最新提交
git tag -a name -m "message" 打标签并添加注释
git tag -d name 删除标签
git push origin name 推送标签
git push origin --tags 推送所有标签
- 标签常用于标记重要的版本
模块
git submodule add <url> <path> 添加子模块
git submodule init 初始化子模块
git submodule update 更新子模块
git submodule foreach git pull origin master 更新所有子模块
git submodule status 查看子模块状态
git submodule foreach git checkout master 切换所有子模块到 master 分支
git submodule foreach git pull origin master 拉取所有子模块
git submodule foreach git push origin master 推送所有子模块
GitHub
GitHub Actions
name: CI/CD
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Python 3.10
uses: actions/setup-python@v2
GitLab / Gitea