I’ve been a long-time user of TFS and am currently giving GitHub a try, but there are a few concepts that I’m struggling to get my head around.
I’m using the Visual Studio GitHub extension, and after making changes in my project I see a button with the options: “Commit”, “Commit and Push” & “Commit and Sync”. What do these do? Similarly I’ve seen options for “Fetch” and “Pull”- what’s the difference?
With GitHub, correct me if I’m wrong but it seems that I first have to “commit” my changes to a local repo then I have to “push” those changes to github.com. What’s the point of having a local repo? It seems like an unnecessary extra step. (In the TFS world, after “checking out” a file and making changes to it on my PC, I would then “check in” those changes straight to the TFS server).
Last question - TFS allows two devs to work on the same file, and does a pretty good job of merging the changes when they both check-in. If it can’t automatically merge (e.g. both devs have changed the same line of code) then Visual Studio displays a “merge conflicts” UI to manually fix such issues. How does GitHub deal with these scenarios?