【问题标题】:Merging Upstream Repo with --Squash将上游回购与 --Squash 合并
【发布时间】:2015-01-22 14:04:17
【问题描述】:

我在 GitHub 上使用分叉存储库,有时我需要合并真实(“上游”)存储库的工作,如 here 所述。

我很想像这样压制他们的变化

git pull https://github.com/mixedinkey-opensource/MIKMIDI.git MIDIFiles --squash

但是...以后我的东西会自动与上游仓库合并吗?或者 即使 我的 更改很少,这些压缩提交是否会导致我的存储库与上游存储库有很大不同?

【问题讨论】:

  • 使用 --squash 可能会增加发生合并冲突的机会,因为 git 必须使用较早的共同祖先来进行以后的合并。我看不出你为什么要这样做。你想达到什么目的?
  • @SvenMarnach 在我工作时,主要的 repo 正在推进数十次提交。他们将在我正在做的事情之前和之后进行提交。我想保持我的历史干净,所以我不会混淆我正在做的事情。混乱的 git 历史很难阅读,虽然我可以很好地 grep 它,但这是一个额外的麻烦。这有意义吗?
  • 使用 --squash 并没有真正使 your 分支的历史更清晰。每次合并你仍然会得到一个提交。
  • 从上游获取将获取单个提交。如果您将上游分支合并到您的分支中(例如git merge upstream/master),这将在您的分支上创建单个合并提交或执行快进,具体取决于您是否在上次合并后进行了任何更改。在前一种情况下,您的分支的git log 只会显示一个合并提交,在后一种情况下,它将显示单个上游提交。如果你想避免快进,你可以使用--no-ff 标志到git mergegit pull,或者…
  • ...使用git reset --hard HEAD^ 回退之前的合并(警告:这将丢弃所有本地更改。如果要保留它们,请先存储)然后再次调用git merge。如果您还没有发布第一个合并提交,您应该只选择后一个选项。

标签: git github


【解决方案1】:

Even for subtree, a pull --squash can be troublesome

当您将 PR(拉取请求)分支合并到原始存储库中时(为了只获得一次提交),该命令更多地用于集成商方面。
参见例如“Merging a PR (yours or contributors)

请记住,拉取请求等同于具有潜在大量提交的远程 github 分支。
在这种情况下,建议将远程提交历史压缩为每个问题有一个提交,而不是合并多个贡献者的提交。
为了做到这一点,同时关闭 PR,建议使用 squash 提交。

所以在你的情况下,建议不要使用壁球。

【讨论】:

    猜你喜欢
    • 2013-05-25
    • 2013-07-18
    • 2018-04-03
    • 1970-01-01
    • 2011-08-11
    • 2013-08-13
    • 2011-01-26
    • 2012-03-24
    • 1970-01-01
    相关资源
    最近更新 更多