Originally Posted by Mrzev Warning: Spoiler! (Click to show)
When I was talking about merging, i was talking more along the lines of when someone updates the repo before you check in, and you need to merge your code in with there's. GIT and SVN both do differentials when you push in the data. Its not saving another whole copy, it only saves what was changed. I dont consider that merging at all.
I just picked up TortiseGIT and I'm happy with that. I dont mind CMD stuff, I do a bunch of it with all sorts of other apps like today i will need to do a bunch of FFMPEG stuff. My issue with CMD is trying to remember the arguments for everything. I cant remember if you push first, or commit. What is the argument to add a message to the commit... how do I add files... how do i remove files.... how do i view the history of this file????? If i knew all the cmds on the top of my head, its no biggie, but I just can never remember those. To right click a file and click "history" is very easy and typically formatted in a nicer way, but im sure you can grep the output or add more flags to sort the data how you want it in CMD too. Every time I use GIT on WINDOWS (not linux), I have issues with credentials, I think most of them derive from the fact that I forget i need to launch Pagent.
I was in charge of the SVN, and TFS instance at my previous job for a group of 22 developers working on 5 active projects and 15 legacy projects, and in that 3 year time, I ran into less issues than I have in the shorter span of me using GIT. The ONLY annoying issue I ran into on SVN (and probably would happen on GIT), was where a file with the same name got checked in 2x one uppercase one lower case, and when pulling windows would freak out because windows files are not unique if the casing is different, while linux (where svn was running) sees them as different files.
I have not had to do any java in 2 years, but I need to find a new IDE because i hate Eclipse. I am sure whatever tool i find will have nice support for GIT.
All of your issues sound like windows issues to me. You like your GUI's but you don't like the baggage that comes with it (the terrible file system as a start). It sounds like you aren't using Git Bash, but are trying to use the native terminal for everything, and honestly that entire experience is so poor I install git on machines I never plan to code on, just to get a familiar defaulted git bash shell.
You are clearly more versed in SVN, which is why you would be more comfortable using it, but it is also why you have so much trouble with git. You committed so completely to the SVN way of doing things, any change in the workflow seems wrong and alien to you, and your years of experience scream 'this is wrong' when you're going through things.
The problem is, Git merges all of those issues you think might be a problem for you. When I first started with git, I actually had to work hard to contrive a change to our code base which would cause git an issue. The only way I could guarantee a merge conflict was editing the exact same line in the history of both branches in a merge, but even then git has an uncanny ability to pick the right one.
The reason you think SVN and Git have parity on the diffs they store, is because you don't understand that Git stores your information in a fundamentally different way. SVN stores your docs, and then a version of them in history, the changes are stored but the document is kept complete. Git on the other hand stores your history tree, and the changes and replays them in order to build your document.
SVN keeps the most up to date 'truth' and tries to handle the history for merges to get to the right result of the joining of two truth's. Git however just combines the history of both branches, and is able to apply orders of magnitude more of it without conflict before the results require intervention. SVN tracks changes at the file level, Git tracks changes at the line level (kinda).