I wanted to merge 2 partitions disk0s2
(unused space) and disk0s4
(OS volume)
My disk looked like this:
/dev/disk0 (internal, physical):
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *1.0 TB disk0
1: EFI EFI 209.7 MB disk0s1
2: Apple_HFS Untitled 500.6 GB disk0s2
3: Apple_APFS Container disk2 199.3 GB disk0s4
4: Microsoft Basic Data BOOTCAMP 300.0 GB disk0s5
Somewhere here I found a solution so I ran the command
sudo diskutil erasevolume "Free Space" %noformat% /dev/disk0s2
But then the next command
sudo diskutil apfs resizeContainer disk0s4 0
Gave error:
Error: -69519: The target disk is too small for this operation, or a gap is required in your partition map which is missing or too small, which is often caused by an attempt to grow a partition beyond the beginning of another partition or beyond the end of partition map usable space
So now it looks like this:
/dev/disk0 (internal, physical):
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *1.0 TB disk0
1: EFI EFI 209.7 MB disk0s1
2: Apple_APFS Container disk2 199.3 GB disk0s4
3: Microsoft Basic Data BOOTCAMP 300.0 GB disk0s5
gpt show disk0
start size index contents
0 1 PMBR
1 1 Pri GPT header
2 32 Pri GPT table
34 6
40 409600 1 GPT part - C12A7328-F81F-11D2-BA4B-00A0C93EC93B
409640 977979728
978389368 389234312 2 GPT part - 7C3457EF-0000-11AA-AA11-00306543ECAC
1367623680 585901455 3 GPT part - EBD0A0A2-B9E5-4433-87C0-68B6B72699C7
1953525135 32 Sec GPT table
1953525167 1 Sec GPT header
The best would be if I could make the main volume to the full space available, but if it's too difficult it would be enough to have that 500Gb as a separate volume as it was.