git - 防止对后续 pull 请求重复提交

标签 git github gitkraken

据我所知,在我提出 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/

相关文章:

git - 如何通过 GraphQL API 搜索下载 Github 存储库?

gitkraken - gitkraken 中的 tab-width 可以配置吗?

git - Azure Pipelines 找到传入 merge 的提交哈希

git工具媲美bzr qlog

ios - 忽略库 .xcodeproj 文件更改

curl - 从脚本访问/下载github文件的官方方式?

git - 在 monorepo 中限制用户的访问权限

git - 回滚到以前的提交 - Github for MAC(恢复已经在进行中)

gitkraken 不会自动删除远程功能分支

fonts - 更改 GitKraken 中的差异字体