To clarify on just guard, it works like this:
To perform a just guard, you must tap and release G within 4 frames. If you hold G for 5 frames and release, you will not perform a just guard. After releasing G, any attack that hits within the next 6 frames will be just guarded. Pressing G during this 6 frame window will cause you to guard an attack regularly. To safely just guard, tap and release G, then (as close as humanly possible) hold G as soon as the window closes (i.e. 6 frames after releasing G).
The timeline for the slowest possible just guard is: F0 press G, F1, F2, F4 release G, F5-11 any attack that impacts will be just guarded, F12 hold G to regularly block slow moves. For fastest possible it's F0 press G, F1 release G, F2-8 is the JG window, F9 hold G to block late attacks.
If it is a multi-hit string where each hit connects within 6 frames of the previous hit (such as Cervantes's WR A+B or Elysium's CE), it will automatically just guard all of these hits. You can only perform one just guard attempt every 29 frames (just below half a second), so mashing G will not help. To just guard a low attack from standing, input it like this: 2G~[2] (tap down + G, release G, continue holding down throughout).
Just guarding is best used against predictable strings, especially single-input ones that cannot be cancelled, such as Pyrrha's 66B brave edge. In this case, safely just guarding is not necessary, and it should basically work like this: block first hit of 66B BE, release, tap, and release G quickly, wait for JG flash, buffer an i17 or faster punish (66B BE is -17 on JG).