General questions on Git Workflows

While going through Git Fetch | Atlassian Git Tutorial,
I decided to create an image summary.

  1. When will the remote branch commits from git branch -r show origin in folder name vs coworker-repo? Is it all local remote branches generated from git clone get origin while those created with git init, git remote add get the more meaningful names like coworker-repo?

  2. Why does git checkout a newly added remote create detached head? My understanding is that happens when HEAD is not at tip of branch like when I move back into a historical commit . In this case isn’t HEAD at tip of coworker/master branch after checkout? Or it is complaining because i’m on tip of local local master branch, which mismatches HEAD that is on tip of coworker-repo/master, so there are actually at least 2 scenarios to create detached head? (1. same branch but check out a single historical commit so HEAD got misaligned with tip of branch. 2. HEAD moved to tip of new branch fetched from remote while such branch does exist in local local)

  3. Are there naming considerations of new_branch which may affect proper pushing later? I think there is something about “matching refs rule” that can result in pushing to the wrong remote later.

  4. Practically why do people use git remote add instead of clone? Does it depend on which side did information get created first? Like if someone else wrote the code and it appears in github, i would clone, but if i wrote the code locally first, i would git remote add?

  5. Do I ever need git remote add or git push handles that already? (I have a sense git push workflow is different for clone vs remote add). What is the workflow of git push? Does it go to both local remote and github?

  6. When we create tracking relationships, is it done between local local + github, or local remote + github, or all 3?

  7. Are there other important common workflows that can be added to this diagram?

P.s I know some labels may not be good. Such as the origin under Github does not need to be called origin.

Other general question:

I’m trying to see the details of git branch -d, seems that it only warns if there’s unmerged/unpushed commits, so it does not warn if there are staging area changes but not commited, or working directory changes?

Generally what are the common commands that take effect on/are affected by working directory changes, staging area changes, commit changes?