我在这里看到了类似的话题,但从那里的答案来看,他们都在处理公开的PR。我的情况有点不同。
我试图向Github做出我的第一个贡献,我检查了一些教程,分叉,克隆,提交,推送和创建PR。
然后我意识到我提交了我的主要电子邮件,我不想公开。所以我更新了git config,运行git commit --amend --author="new name <new@e.mail>"
然后强制推送到远程仓库(fork)。
但在那次推动之前我关闭了PR(猜测这是一个错误)。
现在,当我去那个PR我可以看到(通过提交哈希)它仍然引用旧提交,并且出于某种原因(Github策略)我不能重新打开PR,因为分支被强制推送。 / p>
有解决方法吗?
编辑:我可以通过克隆原始项目并将fetch = +refs/pull/*/head:refs/remotes/origin/pr/*
添加到.git/gitconfig
来从原始项目中获取我的PR。
但当然,我无法推动它:
git push origin pr/<pr_id>
给出错误:
remote: Permission to original/project.git denied to <username>.
fatal: unable to access 'https://github.com/original/project.git/': The requested URL returned error: 403
答案 0 :(得分:0)
PR只是一个分支的包装器 - 所以当你制作PR时,有一个与之关联的分支。如果修改分支,则PR也将被修改。
假设您可以执行分支new_pr
:
# Checkout the branch
git checkout new_pr
# Make sure your default email address is correct
git config --global user.email you@example.com
# Change any commits to remove email, i.e.:
git commit --amend --reset-author
# (or if it's wrong for several commits, use 'rebase')
# force push this branch over the 'wrong' one on github
git push origin new_pr --force
现在github分支中将包含正确的电子邮件地址,PR(如果无法访问)将“自动更新”以指向更新分支的内容。
答案 1 :(得分:0)
好的,我找到了解决方案。 :) 首先,简要总结一下问题: 1)PR已关闭,这就是为什么它没有从fork repo自动更新的原因; 2)PR无法重新打开,因为fork repo已被强制推送。
现在,要解决问题:
git reset --hard HEAD~1
。现在分支处于原始状态 - PR没有变化。git remote add localorigin ..\<original_repo>\
然后git checkout --track localorigin/pr/<id>
。检查这是否是正确的PR。git merge pr/<id>
。现在本地fork repo中有错误的提交。git commit --amend --author="new_name <new@e.mail>"
。