六镇起义发生的经过是这样的:
孝明帝元诩正光四年(公元523年)夏,柔然主郁久闾阿那瓌南侵至平城附近,那时六镇“戎马甲兵,十分阙八”(《魏书·源贺传子怀附传》),边防非常空虚,结果阿那瓌俘执北魏行台尚书元孚,“驱掠良口二千,并公私驿马牛羊数十万”北去。孝明帝急忙抽调关内大军十五万人前往抵御,结果无功返回。柔然人不久又进攻六镇,六镇本来很空虚,士兵天天在饥饿之中,见大敌来侵,怀荒镇兵民请求镇将把公仓打开,发粮食给兵民,以便抵抗。镇将借口没有洛阳命令,不敢擅自开仓1,以致兵民愤恨异常,聚众攻杀镇将。
正光五年三月,六镇最西的一个镇--沃野镇辖下有一个高阙戍,戍主“率下失和”(《北史·魏广阳王建传孙渊附传》)。 镇民破六韩拔陵聚众起义,杀戍主。起义不久,就攻占了沃野镇,史称“诸镇华夷之民,往往响应”(《资治通鉴》梁武帝普通四年)。高平镇民赫连恩等推敕勒酋长胡琛为首,举兵攻下高平镇,响应拔陵。拔陵接着攻下武川、怀朔两镇,又连败政府军于五原白道(今内蒙古呼和浩特市北)。白道之战,魏军“只轮不返”(《北史·魏广阳王建传孙渊附传》)。六镇至此尽为起义军占领。东西部敕勒(高车族),也加人了起义集团,声势浩大。北魏政府至此已经束手无策,统治阶级为了挽救自己灭亡的命运起见,不惜出卖土地和人民,请柔然人来消灭六镇义军的势力。 北魏的设立六镇,本来是为了抵御柔然,拱卫平城的;现在北魏自己愿意请柔然人来消灭六镇,削弱在北方抵抗柔然人的军事力量,柔然主阿那瓌焉有不愿之理。柔然主阿那瓌就在孝昌元年(公元525年)的春天,率领大军十万,进攻武川镇,西向沃野镇,义军频战不利。六月,拔陵渡黄河南移,余众尚二十余万,不幸又受到北魏广阳王元渊率领下的政府军的夹击。由于军事上的失利,拔陵无法掩护六镇兵民全部后撤,以致六镇兵民二十余万人都为元渊所截获。这时六镇经过柔然人的袭击,生产组织破坏无余,所谓“六镇荡然,无复蕃捍”(《魏书·高凉王孤传六世孙天穆附传》)。北魏政府便派遣黄门侍郎杨昱把这些六镇降户“分散于定(治卢奴,今河北定州)、冀(治信都,今河北冀州)、瀛(治赵军都城,今河北河间)三州就食”(《魏书·杨播传弟子昱附传》)。但日益尖锐的阶级矛盾并未因此解决,于是又爆发了河北大起义。
六镇起义的领导者和组织者破六韩拔陵,是自从东汉以来就已加人鲜卑部落结合的匈奴人的后裔4。参加这次起义的将领如别帅卫可孤、王也不卢等,也大都是鲜卑族人。拔陵自公元524年3月 起义到公元525年6月起义失败,共一年零三个月。 起义失败之后,拔陵的下落不明,可能为柔然人所杀。
六镇起义失败后八九个月,即公元526年的4月,怀朔镇(时已改称朔州)民鲜于阿胡(鲜卑化丁零族人)、厍狄丰洛(鲜卑族人)继续据镇起义,这一年的七月,他们还攻下北魏的故都平城。
这一支义军的结果如何,史书也缺乏记载