V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
ethusdt
0.01D
V2EX  ›  程序员

长期在 github 给开源项目提 pr 的 git 规范流程是什么样的?

  •  
  •   ethusdt ·
    FaiChou · 5h 47m ago · 1183 views

    我使用的一个开源项目工具,发现它有 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 那些无用的文件改动。

    但对于长期维护来讲,这样太麻烦了。为避免出现分叉和代码污染,正确的流程应该是:

    1. 添加原项目为 upstream git remote add upstream xxx
    2. 保持环境代码同步 git pull upstream main && git push origin main
    3. 新建分支做开发 git checkout -b fix-bug-issue123
    4. 提交 pr 前如果原项目有更新,要先做一次 rebase git fetch upstream && git rebase upstream/main
    5. 提交代码 git push origin fix-bug-issue123 然后去 github 点击提 pr
    6. 被 merge 后清理 fix-bug-issuse123 分支

    除此之外,你们还有什么经验可以分享的吗?

    7 replies    2026-05-07 15:25:37 +08:00
    cxhello
        1
    cxhello  
       5h 43m ago   ❤️ 2
    其实就是每次 fetch upstream rebase 然后基于 upstream 主分支建立你的开发分支就可以

    https://github.com/alibaba/nacos/blob/develop/CONTRIBUTING_zh.md
    foolishcrab
        2
    foolishcrab  
       5h 42m ago
    长期维护的话你肯定是原 repo 的成员,说不定 agents.md 都要共享,所以不要简单问题扩大化,别想太多。现在关于 ai 相关的 md 怎么玩没有定论。
    Orenoid
        3
    Orenoid  
       5h 21m ago   ❤️ 1
    如果是想忽略某些文件但是不想改 .gitignore ,暂时加到本地 .git\info\exclude 里就行吧
    ethusdt
        4
    ethusdt  
    OP
       5h 12m ago
    @Orenoid 学到了 谢谢
    Tink
        5
    Tink  
    PRO
       4h 5m ago
    正常来说应该是分支做开发,然后 main 保持上游同步吧
    wenrouxiaozhu
        6
    wenrouxiaozhu  
       2h 33m ago
    @ethusdt #4 也可以在用户 gitignore 文件指定...
    ❯ cat ~/.gitconfig
    1 │ [credential]
    2 │ helper = store
    3 │ [core]
    4 │ excludesfile = ~/.gitignore_global
    5 │ editor = vim

    ❯ cat ~/.gitignore_global
    1 │ **/.history
    2 │ **/trash/**
    3 │ **/tmp/**
    4 │ **/log/**
    guanzhangzhang
        7
    guanzhangzhang  
       36 mins ago
    6 个步骤是对的,开源 pr 就是这样的流程,fork 后自己仓库作为 origin ,remote add upstream 添加原始仓库,后期 fetch upstream 即可,好多人都搞 bot 自动同步上游混 commit 次数让 github 活跃一片绿
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5606 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 86ms · UTC 08:02 · PVG 16:02 · LAX 01:02 · JFK 04:02
    ♥ Do have faith in what you're doing.