"Easiest" is always a bit tricky.  Interactive rebase will let you squash everything, and is "easy" by some measure.
Another "easy" way, which looks a bit complicated, is to use a "squash merge" (which is not an actual merge at all, but does use the same underlying code as git merge, so it's done with the same command).  Let's say you're on branch devel whose upstream is origin/devel.  First we'll rename devel to devel-full to indicate that it's the one with the full sequence of commits.  Then we'll create a new devel tracking origin/devel, and "squash-merge" devel-full:
git branch -m devel devel-full
git checkout --track origin/devel
git merge --squash devel-full
git commit
You have to separately git commit as --squash inhibits the commit that git merge normally makes.
Yet a third easy (?) but slightly scary way is to check out the tip version and commit it.  Again, assuming devel as before, we move the "full develoment" branch-name out of the way and make a new local branch to make the new commit on.  This time instead of git merge --squash, though, we use two commands before git commit:
git branch -m devel devel-full
git checkout --track origin/devel
git rm -rf .                      # assumes you're in the top directory
git checkout devel-full -- .
git commit
The git rm -rf . schedules (in the index/staging-area) every single file to be removed, but then the git checkout devel-full -- . tells git to re-populate the index/staging-area with every single file that exists at the tip of devel-full.  So this means "make the tree for the next commit, look exactly like the tree for the tip of devel-full".
(The remove-and-re-create method works for one case where merge --squash does not: specifically, it works for "replacing" the tip of one branch with the tip of another, even if the two branches are not related and hence not merge-able.  Otherwise merge --squash is one step shorter, and definitely not as scary looking, at least!)
Both of these other "easy" (?) ways leave you with a branch with the full development history.  If you want it, great!  If not, you have to delete it.