Git:在master上挤压提交的最简单方法

Git:在master上挤压提交的最简单方法,git,github,Git,Github,可能重复: 我有一个项目托管在GitHub上,我有一个本地克隆。我已经向GitHub提交了大量的小提交。这一切都是使用默认的*主分支完成的 我对合并--挤压和重基等感到困惑。。。 将多个历史提交组合到一个提交中以使其推送到GitHub的最直接的方法是什么?在开始之前,您应该确保git status是干净的(即该命令没有输出),以避免丢失工作。做你想做的事情最简单的方法可能是: git reset --soft <LAST-COMMIT-THAT'S-OK> git commit -

可能重复:

我有一个项目托管在GitHub上,我有一个本地克隆。我已经向GitHub提交了大量的小提交。这一切都是使用默认的*主分支完成的

我对合并--挤压和重基等感到困惑。。。
将多个历史提交组合到一个提交中以使其推送到GitHub的最直接的方法是什么?

在开始之前,您应该确保
git status
是干净的(即该命令没有输出),以避免丢失工作。做你想做的事情最简单的方法可能是:

git reset --soft <LAST-COMMIT-THAT'S-OK>
git commit -m 'Many squashed commits'
git push --force origin master

git reset--soft如果其他分支机构定期从回购中撤出(仅限快进),这样做会产生什么影响?@whoami:如果其他人撤出该分支机构,他们将看到
(强制更新)
,git将拒绝更新其分支机构。然后,他们需要(a)确保所有工作都已提交(b)通常是重新设置基础(例如使用
git-rebase-origin/master
)或将其分支重置为刚刚强制更新的远程跟踪分支版本(例如使用
git-reset-硬源/master
)。除非你乐于向人们解释该怎么做,当然,最好不要强制重写历史。他们都会看到他们的本地分支和远程分支已经发生分歧,将不得不在中合并更改,而不仅仅是快速前进。@Noufal Ibrahim:在这种情况下合并的问题是,他们在合并的
中仍然会有所有的小提交分支,并可能将它们推回存储库。@whoami:是的,最好将历史重写限制为您尚未推回的提交。如果您确切地知道要压缩最后N次提交,则重置--soft
和提交可能更容易,但如果您想要有选择地压缩和重新排序提交,则使用
git rebase-i
将为您提供这种灵活性。(还取决于您更熟悉的命令…)