He hit three batters, but those would be the only baserunners against him. It's only the third no-hitter since 1914 that had the only baserunners come on hit batsmen, but the other two only had one each (Lew Burdette 8-18-1960 and Kevin Brown 6-10-1997).
Only two other no-hitters since 1914 had multiple hit by pitches (Virgil Trucks 5-15-1952 and Bo Belinsky 5-5-1962). Those both had two HBP's, making this the first in at least the last century with three hit batsmen.
No-hitters have become an annual occurrence for the Giants. Matt Cain pitched a 15-strikeout perfect game in 2012, Tim Lincecum threw a 148-pitch no-hitter in 2013, and Lincecum pitched another no-no last year. Heston's gem made the Giants the second team to pitch a no-hitter in four consecutive seasons:
1962-65 Dodgers
1962: Sandy Koufax (6-30-1962)
1963: Sandy Koufax (5-11-1963)
1964: Sandy Koufax (6-4-1964)
1965: Sandy Koufax (9-9-1965)
Sandy Koufax: Pretty Good.
The last of these was a 14-strikeout perfect game, the most in a perfecto along with Cain's masterpiece.
Let's take a look at the four other teams that have pitched a no-hitter in three consecutive seasons:
1916-18 Red Sox
1916: Rube Foster (6-21-1916), Dutch Leonard (8-30-1916)
1917: Babe Ruth and Ernie Shore (6-23-1917)
1918: Dutch Leonard (6-13-1918)
That 1917 game featured the greatest relief appearance in baseball history. Ruth walked the first batter of the game, Ray Morgan. He argued with home plate umpire Brick Owens, who ejected him from the game. Ruth responded by slugging Owens in the head and Shore was called in to pitch on two days rest. Morgan was immediately thrown out stealing second and then Shore retired all 26 batters. It's not an official perfect game because of the Ruth walk, but it goes down instead as a combined no-hitter.
1946-48 Indians
1946: Bob Feller (4-30-1946)
1947: Don Black (7-10-1947)
1948: Bob Lemon (6-30-1948)
Black is the relative unknown here. He beat Bill McCahan and the A's in his no-no, then McCahan no-hit the Senators two months later. Only three other pitchers have been on the wrong end of a no-hitter, then pitched MLB's next one (Hugh Daily 1883, Mal Eason 1906, Tim Lincecum 2013). We'll see if Noah Syndergaard pitches the major leagues' next no-no.
1967-69 Orioles
1967: Steve Barber and Stu Miller (4-30-1967)
1968: Tom Phoebus (4-27-1968)
1969: Jim Palmer (8-13-1969)
The combined no-hitter by Barber and Miller was actually a loss! The O's had just taken a 1-0 lead in the eighth on a Luis Aparicio sac fly, but Barber opened the ninth by walking the first two batters. He set down the next two and got two strikes on Mickey Stanley, but with runners on second and third, he uncorked a wild pitch that tied the game. He ended up walking Stanley for his tenth free pass of the game (!) and departed for Miller. From the SABR article about the game:
The first batter he faced, Don Wert, smacked a ground ball up the middle that shortstop Luis Aparicio ranged far to his left and caught on the run. Aparicio then gave a backhanded toss to second baseman Mark Belanger, who had just entered the game as a defensive replacement, for the force out. The normally sure-handed Belanger’s bare hand got in the way of the throw causing the ball to drop out of his glove. The error allowed Wood to score the Tigers' second run of the game. The next hitter, Al Kaline, hit a sharp grounder that caromed off third baseman’s Brooks Robinson’s glove. The ball took a fortuitous bounce into the waiting hands of Aparicio, who threw to Belanger covering second for final out of the inning.This game was so strange that the great Mark Belanger made an error that allowed the winning run to score. Fred Gladding worked a 1-2-3 ninth and the Tigers beat Baltimore 2-1 despite being no-hit.
1973-75 Angels
1973: Nolan Ryan (5-15-1973), Nolan Ryan (7-15-1973)
1974: Nolan Ryan (9-28-1974)
1975: Nolan Ryan (6-1-1975)
This is like the Dodgers streak in that only one pitcher is responsible for it. With two outs in the ninth inning of the first no-hitter, Norm Cash came to the plate with a table leg instead of a bat. When home plate ump Ron Luciano told him he couldn't bat with a table leg instead of a bat, Cash (0-for-3, 2 K) said, "But Ron, I’ve got as much chance with this as I do with a bat." He popped up to short for the final out.