Github Push Pull Fetch Commit Explained