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