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