So here is a diagram of the situation :

As can be seen in the image we have feature A branch from master in which some commits were made directly and some were made by making and merging grandchild branches like feature A.1 and feature A.2. These A.1/A.2 merge commits are what make A non-squashable. What I need :
- A branch with all the changes made in feature A, but as a single commit. (This new branch will be merged with master eventually)
- I want the authors (authors of A.1 and A.2 can be different) to be retained in this new branch.
You cannot do this. Git records exactly one author and exactly one committer per commit. If you squash multiple commits from different authors into one commit, there is no way you can preserve the authors properly in the corresponding commit.
You could, however, squash feature A.1 into a single commit (by re-doing the merge with
--squash) and similarly with feature A.2 into a separate commit, and then keep the rest of A in a set of commits independently. That would allow you to preserve the authors if each subfeature were the work of a single person. However, it would not result in you having one single commit at the end.