我向一个开源项目发起了pr,但是这个pr里出现了我上一次pr的commits。我按照这个博客,rebase了一下代码(也可能是我打开的方式不对),然后本来是有10条commits(2条本次pr,8条上次pr)的,现在我有20条了…
这里是pr的地址
请教一下各位大佬,这种情况该如何操作,才能让pr只包含本次提交的2条commits
我向一个开源项目发起了pr,但是这个pr里出现了我上一次pr的commits。我按照这个博客,rebase了一下代码(也可能是我打开的方式不对),然后本来是有10条commits(2条本次pr,8条上次pr)的,现在我有20条了…
这里是pr的地址
请教一下各位大佬,这种情况该如何操作,才能让pr只包含本次提交的2条commits
看到 PR 已经 merge 了,恭喜。建议每次开发新代码都创建一个单独的分支,主分支保持和 upstream 同步。
git fetch upstream
git rebase upstream/main
git checkout -b feat-for-something
谢谢大佬的回复!之前从来没有给同一个项目做过两次以上的contribution,所以犯了这个错误!后来自己查了一下贡献指南,发现确实是因为没有在fork之后,创建独立的分支,引发的问题。
望引以为戒!
一般fork之后立刻:
git branch --set-upstream-to=upstream/main main
然后每次贡献时:
git checkout main
git pull
git checkout -b feat/something
然后push这个分支并提PR就可以了。
分支对应的remote关系为:
main -> upstream/main
feat/something -> origin/feat/something
这样的做法,你的 origin/main 永远不用更新,于是也永远不需要做合并上游这个动作,甚至它可以不存在,因为根本没用到它。而你本地的main分支永远只包含上游的变更。这是我用的一些例子:
可以发现自从fork之后这个main就再也没更新过,一直停留在当时那个commit。但丝毫不影响我贡献的。
收到!当时开源经验比较少,提pr都不知道要先创建分支
补充一下,fork之后clone自己的仓库到本地,需要先执行:
git remote add upstream 上游仓库地址
git fetch --all --prune
再 git branch --set-upstream-to=upstream/main main