可能重复:
如何使用git将我的最后X个提交合并在一起?
我有一个托管在GitHub上的项目,并且我有一个本地副本。我有很多小的提交,这些提交已经推送到GitHub。所有这些都是使用默认的*主分支完成的。
我在merge --squash和rebase等之间感到困惑...... 将几个历史提交合并为一个提交的最简单方法是什么,以便将其推送到GitHub?
可能重复:
如何使用git将我的最后X个提交合并在一起?
我有一个托管在GitHub上的项目,并且我有一个本地副本。我有很多小的提交,这些提交已经推送到GitHub。所有这些都是使用默认的*主分支完成的。
我在merge --squash和rebase等之间感到困惑...... 将几个历史提交合并为一个提交的最简单方法是什么,以便将其推送到GitHub?
开始前,确保git status
的状态是干净的(即该命令没有任何输出),以避免丢失工作。最简单的方法可能是:
git reset --soft <LAST-COMMIT-THAT'S-OK>
git commit -m 'Many squashed commits'
git push --force origin master
请谨记,这是重写历史记录(这就是为什么需要使用--force
选项向git push
),因此,如果其他人可能已经从您的存储库中克隆或拉取了内容,则应避免使用。有关更多替代方案,请参见此问题及其答案:
git rebase origin/master
)或将其分支重置为刚刚被强制更新的远程跟踪分支版本(例如git reset --hard origin/master
)。除非您乐意向人们解释要做什么,否则最好不要强制推送重写的历史记录。 - Mark Longairgit branch -D branchname && git checkout branchname && git pull
命令,这将删除他们本地的分支副本并检出一个新的副本。我们禁止向master
分支推送任何更改,并在功能分支上完成所有工作。因此,只有在同一功能分支上工作的人会受到影响。 - styfleHEAD~5
语法的注释吗? - styfle