我认为您想要一个使用两个分支的工作流程。合并的本地分支(主)和远程“只读”跟踪分支(远程)。
在主分支上使用双遥控器可以让您继续工作,并与远程项目保持同步。您的本地更改和合并的远程更改可以推送到您的本地 git 服务器。
git push localserver master
上游补丁可以在您的远程跟踪分支上创建和完善,并提交给项目。
“只读”远程的单独跟踪分支可让您为远程项目的上游准备补丁和提交。
# Master branch is merge of local changes, and remote changes
git checkout master
git pull -m origin master
# Set up a local tracking branch for the 'read-only' remote.
git checkout -b remote remote master
# Start reviewing changes between the two branches.
git diff --name-status ..master
当您想要上游补丁时,可以使用来自 master..remote 的差异来定义您的只读远程分支的补丁。
git diff master..remote -- files >patch
git checkout remote
patch -p1 <patch
git commit -m "Your patch"
git format-patch -1
将格式化的补丁文件发送到远程项目。如果您需要为远程项目修改和变基,您可以在远程跟踪分支上完成这项工作,直到它获得批准。
(设置 git dual remote 涉及编辑 .git/config,并在别处解释)