Git 远程提交以及撤回错误的提交代码 | 参与开源项目开发-基础

2023-3-1|2024-2-12
D_SUPER
D_SUPER
type
Post
status
Published
date
Mar 1, 2023
slug
git_push_reset
summary
基础的 Git 操作:如何修改代码,如何远程提交代码和错误提交撤回的 Git 操作。(参与开源项目的 Git 基础)
category
技术分享
tags
NotionNext
Github
Git
icon

NotionNext 作为一款部署在 Vercel 上,免费开源的静态博客系统,项目使用 NextJS + Notion API 实现博客内容渲染。拉取 Github 库后在 Vercel 上设置 Environment Variables(环境变量) 即可实现个性化部署[*]。部署完成后,仅需在 Notion 中添加/修改自己的笔记内容,即可实现无感知地更新博客。
NotionNext 支持二次开发,在本地测试好修改文件后,还可以将修改推送到主仓库,参与项目贡献。如何二次开发 NotionNext ,自定义功能详见:NotionNext 二次开发手册
本文记录一下如何将本地的代码修改提交到上游仓库,以及如何处理错误的 Git 提交。
相关阅读:

拉取上游仓库

  • 使用 vs code 打开本地 git 项目文件夹
  • 切换到与上游同步的分支: git checkout tangly1024-main
    • git checkout 命令 | git switch 命令
      git checkout xxxx 切换分支
      git checkout -b xxxx 新建分支
      git branch -d <name> 删除分支
    • tangly1024-main 分支为设置的 NotionNext 上游同步分支,创建过程为:
        1. 新建 tangly1024-main 分支(名字可以自取, -b 表示新建分支)
        git checkout -b tangly1024-main main
        1. 拉取想要开发的代码库(填入 git 地址,git 分支 main
        git pull https://github.com/tangly1024/NotionNext.git main
        notion image
        此时该分支为上游的完全代码。同样的操作用于更新 NotionNext 项目[*]。
  • vs code 可视化 git 分支
notion image

提交代码修改

  • 在本地修改该分支(git checkout tangly1024-main
    • git status 查看文件修改追踪情况
    • git add xxxx 提交xxxx文件修改 或 git add . 提交全部修改文件
    • git commit -m '提交行为注释' 注释提交(注释提交的目的等)
  • 本地 git 处理完成后,向上游推送修改
    • git push --set-upstream origin tangly1024-main
      指定向 tangly1024-main 上游分支修改,此时在 NotionNext 项目中出现新的 Pull requests
      notion image
      可以在其中添加注释,以便上游仓库大佬更好地处理你的代码合并。
      合并完成
      合并完成
如果你提交的代码完整无误,那就安心等待处理就好啦。

撤回远程提交

然而“人有失手,马有漏蹄”。如果你提交的代码出现错误,或是不想提交了,又该怎么办呢?
  • 首先检查提交历史 git log (输入字母 q 推出历史查询)。
notion image
  • 在其中找到想要回复的历史状态位置,例如:
    • commit a835c56fec010a06ee259519c4d3031e217c1adb xxxxxx xxxxxx
  • 一键“回档”
    • git reset --soft a835c5
      git reset
      git reset --soft HEAD^ reset到上一次修改
      git reset --soft HEAD^2 reset到上上次修改
      git reset --soft a835c5 reset到 a835c5… 状态
      此时完成本地的 Git 恢复工作。
  • 再将恢复状态同步到上游仓库,覆盖提交,此时即可撤回提交状态。
    • git push --set-upstream origin tangly1024-main --force
等你修正好代码后可以重复提交代码修改步骤,完成提交。
更暴力的方法,view all branches 直接删除 Active branch
notion image

总结

  • 该操作是参与 Github 项目开发的基础 git 知识。
  • 通过这次错误提交和撤回的过程,我更加熟悉 Git 的本地和远程的操作关系,也更深刻理解了分支和历史恢复。
  • 延申阅读:
    • git push origin --delete <BranchName> 删除远程分支
    • 慎用 git reset --hard 会还原部分修改代码
      git reset –-soft:回退到某个版本,只回退了 commit 的信息,不会恢复到 index file 一级。如果还要提交,直接commit即可;
      git reset -–hard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容,撤销的commit 中所包含的更改被冲掉;

推荐阅读

 

zotero 使用 AList 提供 WebDAV 同步 | 提高 AList 上传文件大小限值思源笔记使用 Synology 免费 15G 对象存储 S3/C2 同步
  • Twikoo
  • Waline
  • Cusdis