A great CLI terminal GUI.
https://github.com/jesseduffield/lazygit

Another tool to consider is Git Butler.

YT: Using Lazygit

02:27 Installing Lazygit
03:37 Lazygit interface
04:30 Staging a File
05:51 Creating a new branch
06:28 Committing a file
06:55 Pushing a commit
07:15 Rebase
07:53 Resolve conflicts

My .bash.d/lazygit.sh script to remind me to install it:

if ! command -v lazygit > /dev/null 2>&1 ; then
  echo "no lazygit.  Setting up the function install_lazygit"

  function install_lazygit() {
    pushd .
    cd /tmp/
    LAZYGIT_VERSION=$(curl -s "https://api.github.com/repos/jesseduffield/lazygit/releases/latest" | grep -Po '"tag_name": "v\K[^"]*')
    curl -Lo lazygit.tar.gz "https://github.com/jesseduffield/lazygit/releases/latest/download/lazygit_${LAZYGIT_VERSION}_Linux_x86_64.tar.gz"
    tar xf lazygit.tar.gz lazygit
    install lazygit $HOME/.local/bin
    popd
  }