Reputation: 3497
I come from an SVN background, and I have a hard time grasping Git's philosophy. In particular, I'm confused by the following.
Imagine I have made some changes in my working dir. If I switch to another branch, the changes remain, which is very unusual, from an SVN point of view.
This means that uncommitted changes are shared between the branches.
Moreover, the "stage property" of the files is also shared between the branches: if I call git add *
in one branch, then all the files will be added to next commit in all the branches.
Looks like my branches differ only by already committed files.
So, if uncommitted data are shared, then, no matter which branch I am on now, I will commit all the staged files, even if they were added in different branches! As I come from an SVN background, this strikes me as very odd.
Am I correct, or am I just confused? Why does Git work in this way?
Sometimes, Git tells me something like this:
Cannot switch to another branch because your changes will be erased. Commit them first.
In SVN, that's not a problem: branches are independent. Why and when does this happen in Git?
What's up with the way Git handles folders? If I create a new folder, it is not displayed in Git's status report. Does Git simply not care about folders?
Upvotes: 1
Views: 316
Reputation: 11935
Welcome to GIT :) There is a Git way and it is different from SVN way
Summary:
Upvotes: 1