据我所知,在我提出 pull 请求并 merge 后,GitHub 会创建一个“merge 提交”来表示这一点。
但是,如果我在线下发出另一个 pull 请求,即使在将 merge 提交 merge 到我的本地分支之后,它也会显示来自先前 pull 请求的所有提交。
我似乎可以解决这个问题的唯一方法是在 merge pull 请求后直接将我的本地头重置为 GitKraken 中原始 repo 的 merge 提交,然后强制推送到我的 fork 。
问题是,这感觉是一种非常错误的做事方式。真的吗?如果是这样,我应该怎么做呢?
最佳答案
强制推送通常意味着某些事情不太正确。
听起来您在点击 GitHub.com 上的 merge 按钮后并未更新本地上游分支。
精简版
git checkout master
git pull --all
git checkout -b feature-branch
git add stuff
git commit -m "cool feature"
git push origin feature-branch
<click merge on GitHub.com>
git checkout master
git pull --all -p
git branch -d feature-branch
<see refs move, your feature branch get cleaned>
如果您从这一点再次分支,您将不会在以后的 PR 中看到“很酷的功能”提交,因为您的本地 master 拥有它。
更多详情。
merge 后,运行
git pull --all -p
使用所有 Remote 及其引用更新您的本地仓库。
-p
还将修剪 merge 的分支引用以清理您的选项卡完整列表。
所以,顺序通常是:
git checkout 大师 git pull --all -p ;这应该更新您的本地主机,除非它与上游不同 如果您在 master 上确实有本地更改,您应该推送它们,或者通过它们离开。
如果你想扔掉它们,让你的 master 成为上游的副本
git reset --hard origin/master
将使当前本地分支成为远程引用的副本。
关于git - 防止对后续 pull 请求重复提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44378780/