【发布时间】: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 merge或git pull,或者… -
...使用
git reset --hard HEAD^回退之前的合并(警告:这将丢弃所有本地更改。如果要保留它们,请先存储)然后再次调用git merge。如果您还没有发布第一个合并提交,您应该只选择后一个选项。