西漢太初四年(前101年),境內(nèi)古城灘曾設龜茲縣。
東漢永初五年(111年),廢。
明清時歸常樂堡領轄。
民國屬第五區(qū)河東鄉(xiāng)(鄉(xiāng)公所設在牛家梁村)管轄,有四保:一保(古城灘等村)、二保(頭道河則等村)、三保(牛家梁等村)、四保(二道河則等村)。
1949年10月后,設七區(qū)(河東區(qū))所轄為該轄區(qū)的3個鄉(xiāng):一鄉(xiāng)(頭道河則鄉(xiāng))轄5個行政村,二鄉(xiāng)(牛家梁鄉(xiāng))轄4個行政村,三鄉(xiāng)(趙元灣鄉(xiāng))轄4個行政村。
1956年3月,將原牛家梁區(qū)的頭道河則、古城灘、牛家梁3個鄉(xiāng),合并為榆林縣直屬鄉(xiāng)(區(qū)級)。
1958年9月,撤區(qū)并鄉(xiāng),并成立牛家梁公社。
1959年4月,改制為牛家梁農(nóng)林牧場。
1960年1月,擴建為牛家梁農(nóng)場。
1969年1月,將牛家梁、古城灘2個分場合并改制為牛家梁公社,有13生產(chǎn)大隊、61生產(chǎn)隊。
1984年7月,改為牛家梁鄉(xiāng)。
1989年7月,吳家梁村劃歸榆陽鄉(xiāng)。
1997年11月,改鄉(xiāng)為鎮(zhèn)。