The word “get” means “to receive or come to have possession, use, or enjoyment of.” It also means “to cause to be in one’s possession or succeed in having available for one’s use or enjoyment; obtain; acquire.”
Some people insist that the expression “I have got” or “I’ve got” should never be used. They believe that one should write “I have.” They’re wrong. From the definitions, we can see that “get” means “to obtain” or “to acquire.”
The word “got” is the past participle of the verb “get.” (The word “gotten” is also used.) Thus, one can form the present-perfect tense of “get” and write “I have got” or the contraction “I’ve got.”
With all undue respect to the milk industry, “Got milk?” makes absolutely no sense. The word got is the past tense of get. In English, you typically don’t form questions by using the past tense of a verb: “Wrote book?” The milk industry is trying to say, “Do you have any milk? No? Well, go to the store and buy some.” That’s what “got milk?” means.
The use of “I’ve got” is perfectly acceptable, however.
In the words of Bryan Garner:
Get is good English. Yet many writers want to avoid it because they consider it too informal; they prefer obtain or procure. The same tendency is at work here that leads some writers to shun before in favor of prior to, later in favor of subsequent to, and the like. But confident, relaxed writers use the word get quite naturally …. Garner, Oxford, p. 161.