我使用的一个开源项目工具,发现它有 bug ,于是 fork 了一份,然后 git clone 到本地,直接在 main 分支上改了一下,push 之后,然后在 github 开了一个 pr ,最终代码被 merge 了。
这个项目是 macOS 的一个 app ,只要 xcode 打开,就会改动一些配置文件。虽然 git 提交时候肯定会避免提交这些改动,而且没办法在 gitignore 中忽略它。但稍微有点影响。
另外关于 AI 工具,原作者用的 cc ,我用的 codex ,用 codex 打开后会自动生成一些 skills/AGENTS.md 等,这些也不会提交,因为对原仓库原作者来说,这些是没用的信息。但最好也不要改 .gitignore ,毕竟万一后面作者会再换到 codex 呢。
所以每次提交后,会剩下一些配置文件和 AI 工具相关的文件。
后面原项目有很多次 git 提交,我想继续给这项目做贡献。那么现在的处境是:我的本地仓库和 fork 的 github 远端仓库没有同步到最新提交,而且由于都是在 main 上面的操作,导致已经分叉。
于是我在 github 上点了一下同步,并且把本地的代码库删掉,重新 clone 一份,基于这个最新的版本做开发。这样我还省去了 git stash 那些无用的文件改动。
但对于长期维护来讲,这样太麻烦了。为避免出现分叉和代码污染,正确的流程应该是:
- 添加原项目为 upstream
git remote add upstream xxx - 保持环境代码同步
git pull upstream main && git push origin main - 新建分支做开发
git checkout -b fix-bug-issue123 - 提交 pr 前如果原项目有更新,要先做一次 rebase
git fetch upstream && git rebase upstream/main - 提交代码
git push origin fix-bug-issue123然后去 github 点击提 pr - 被 merge 后清理 fix-bug-issuse123 分支
除此之外,你们还有什么经验可以分享的吗?