Git 烂笔头 🖊
Git Connect github.com
# 1. 本地配置, 姓名和邮箱
git config --global user.name "<name>"
git config --global user.email "<email>"
# 2. 生成 ssh 公钥
ssh-keygen -t rsa -C "<email>"
# 2.2 Eenter 回车三次
# 2.3 根据提示复制 id_rsa.pub 内容
# 2.4 github.com 打开 [Account settings]--[SSH Keys]页面,然后点[Add SSH Key]
# 3. 验证, 成功会提示 successfully
ssh -T git@github.com
Git diff
tig or ide or ...
Git 强制远端覆盖本地
git fetch --all
git reset --hard origin/master
git fetch --all : 拉取所有更新, 不同步
git reset --hard origin/master : 本地代码同步线上最新版本(会覆盖本地所有与远程仓库上同名的文件)
Git Tag 管理
# 打了一个 tag v0.0.1
git tag -a v0.0.1 -m "v0.0.1 版本描述信息"
# 本地 tag 推送到远端
git push origin --tags
# 删除本地 tag v0.0.1
git tag -d v0.0.1
# 删除远端 tag v0.0.1
git push origin --delete v0.0.1
or
git push origin :refs/tags/v0.0.1
Git Rebase + Merge 一种安全清晰的版本协作流程
git config --global alias.ll "log --graph --all --pretty=format:'%Cred%h %Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative"
[开发流程]
00) git fetch origin # 确保所有远程分支最新
01) git switch <开发分支> # 切换到开发的目标分支
# 如果本地没有 <开发分支>:
# git switch <主干分支> ; git switch -c <开发分支>
02) coding # 理解需求并快速开发
03) git add <src path> # 添加变更的文件
04) git status # [可选] 确认提交文件是否符合预期
05) git commit -m "xxxxx" # 提交变更
06) git fetch origin # 获取远程最新提交信息,确保 rebase 之前最新
07) git ll # [可选] 确保提交历史清晰
08) git rebase origin/<开发分支> # 变基到远程最新开发分支
# 若成功则跳至 12)
# 若遇到冲突,则继续 09)
09) coding update # 解决所有 both modified 的冲突文件
10) git add <解决冲突的文件> # 标记冲突已解决
11) git rebase --continue # 继续 rebase
# 若仍有冲突,重复 09) - 11)
# 若 rebase 失败,可用 `git rebase --abort` 取消
12) git ll # 确认 HEAD 已经基于 (rebase 到) origin/<开发分支>
13) git diff HEAD <src> # [可选] 对比代码变更,确保无误
14) git push origin <开发分支> # 检查后都正确, 开始提交
[上线流程] [可选] 平常在网页端直接手工操作
15) git switch <主干分支> # 切换回主干分支
git pull origin <主干分支> # 确保主干分支最新
16) git switch <开发分支>
git status # git switch <开发分支>
git pull # 保证开发分支代码是最新要上线代码
17) 重复 6) - 14) 步骤, <开发分支> 换成 <主干分支>
git push --force-with-lease origin <开发分支> # 预防冲突提前解决
16) git merge --ff-only <开发分支> # 仅执行 fast-forward 合并
# 确保合并时无额外的 merge commit
# 如果 fast-forward 合并失败,说明有新提交,重复 06) - 16)
# 实战确保 GitLab 设置受限的 merge,仅允许 MR 进行合并
git push origin <主干分支> # 推送主干分支到远程
Git 分支清理
# 清理本地冗余分支
git branch | grep -v -E 'master$|preview$|staging$' | xargs git branch -D
# 清理远端冗余分支
# git branch -r | grep -v -E 'master$|preview$|staging$' | sed 's/origin\///g' | xargs -I {} echo 'git push origin :{}' | more
git branch -r | grep -v -E 'master$|preview$|staging$' | sed 's/origin\///g' | xargs -I {} git push origin :{}
# 本地分支类比远端分支重新整理
git remote prune origin
git branch -D [branch name] # 删除本地分支
git push origin :[branch name] # 删除远端分支
or
git push --delete [branch name] # [推荐] 删除远端分支, 好记
浙公网安备 33010602011771号