代码提交注释规范
- feat: 新功能
- fix: 修复问题/BUG
- docs: 文档变更
- style: 代码格式(不影响代码运行的变动)
- refactor: 重构(即不是新增功能,也不是修改 bug 的代码变动)
- test: 增加测试
- chore: 构建过程或辅助工具的变动
- perf: 优化相关,比如提升性能、体验
- build: 构建项目或外部依赖的变动
- ci: 持续集成相关文件变动
- revert: 恢复上一次提交
- merge: 代码合并
- deps: 依赖的变动
git 指令
- 添加文件到本地 git 中: git add . || git add test.txt
- 设置提交记录: git commit -m "记录信息"
- 拉取远程分支内容: git pull(默认会拉取跟踪的远程分支内容) || git pull origin main
- 提交 commit 至远程分支: git push origin main
- 本地分支关联远程分支: git branch --set-upstream-to=origin/main main
- 签出指定分支指定文件: git checkout main -- common.js
- 获取所有分支最新信息(不会自动合并本地内容): git fetch
- 查看所有分支情况: git branch -a
- 查看本地分支与远程分支的跟踪情况: git branch -vv
- 缓存当前本地的内容: git stash save "缓存提示信息" (缓存的是当前 git add 的内容)
- 查看缓存列表: git stash list
- 拉取并自动合并首条缓存(会删除缓存记录): git stash pop
- 拉取并自动合并指定缓存(不删除缓存记录)(默认第一条): git stash apply (默认第一条) || git stash apply stash@{2} (提取第三条缓存)
- 删除缓存: git stash drop stash@{2} (删除缓存列表中第三条缓存)
- 清除所有缓存: git stash clear
- 查看当前分支 commit 记录列表: git log
- 撤销本地此次的 commit 操作(未推送远程仓库): git reset --soft HEAD
1 (撤销 commit 但保留文件的修改) || git reset --hard HEAD1 (撤销 commit 并不保留工作区修改) - 回滚提交: git revert hashcode || git reset --hard hashcode
- 合并指定提交: git cherry-pick hashcode
init 初始仓库
全局设置账户(git 账户)
git config --global user.name "username"
git config --global user.email "email"
创建 git 仓库:
mkdir git-branch
cd git-branch
git init
touch README.md
git add README.md
git commit -m "first commit"
git remote add origin https://gitee.com/Yinsls/git-branch.git
git push -u origin "master"
已有仓库?
cd existing_git_repo
git remote add origin https://gitee.com/Yinsls/git-branch.git
git push -u origin "master"
常规提交代码到仓库
- git add . || git add xxx.txt(或者单独添加某文件)
- git status
- git commit -m "提交的记录信息"
- git pull
- git push
创建新分支
创建全新分支
# 创建空分支new-empty-branch
git checkout --orphan new-empty-branch
# 删除原有所有内容(只会影响你当前所在的分支,不过需注意此操作前已经保存并提交了所有修改的内容)
git rm -rf .
# 提交新分支至远程仓库
git commit --allow-empty -m "Initial empty commit"
git push origin new-empty-branch
# 查看仓库所有分支情况
git branch -a
基于 main 分支创建 dev 分支
# 拉取所有分支最新信息(注意: 不会自动合并你当前的分支与远程分支的内容,只是更新了远程跟踪分支的信息)
git fetch || (git checkout main && git pull)
# 基于远程main分支创建并切换到本地dev分支
git checkout -b dev origin/main
# 将本地dev分支推送到远程仓库
git push origin dev
# 设置本地分支与远程分支关联(确保本地的 dev 分支跟踪远程的 dev 分支,否则可能会出现拉取到main分支的代码)
git branch --set-upstream-to=origin/dev dev
# 查看所有分支情况
git branch -a
分支回滚
# 前提: 已存在提交记录001、002、003
# 存在记录的回滚,操作后记录: 001、002、003、004(revert回滚信息)
git revert 002 (回滚至002记录,但此时commit列表会多一条revert的记录,以及之前的003记录也存在,相当于以002的提交重新commit覆盖当前)
# 直接回档的回滚,操作后记录: 001、002
git reset --hard 002 (回滚至002记录,且会完全清除002至当前的所有commit记录)
# 将修改同步至远程仓库
git push --force origin main
分支合并
完整分支合并(将 main 合并到 dev)
$main: git pull
$main: git checkout dev
$dev: git pull
$dev: git merge main
# 解决冲突
$dev: git add 冲突的文件
$dev: git commit (会自动生成合并信息)
$dev: git add .
$dev: git commit --no-edit (会提交没有冲突的文件,并保留前一步的提交消息)
$dev: git push
合并指定记录
# 前提: main中存在提交p001、p002、p003、p004
# 将main中的p002、p003提交合并到dev分支中(实际开发中常用于解决bug或中途修改内容等)
# cherry-pick成功后会完整复制目标提交信息(p002、p003),并不会出现类似merge消息的cherry-pick,而是与原提交一致,除了hash值不同
$dev: git cherry-pick p002
# 解决冲突后需要执行,否则不可继续合并其他提交
$dev: git add xxx (冲突的文件)
$dev: git cherry-pick --continue
$dev: git cherry-pick p003
# 解决冲突后需要执行,否则不可继续合并其他提交
$dev: git add xxx (冲突的文件)
$dev: git cherry-pick --continue
$dev: git add .
$dev: git push origin dev
编程的世界总是充满未知,期待与你在技术的海洋中再相遇
I just hope my code makes more sense than my life.