白毓公,本名文选,籍贯陕西吴堡县白家塌则村,自幼喜爱武艺,习得一身过硬本领。1631年,即崇祯四年,陕西地区遭遇严重旱灾,民不聊生,多地爆发起义。恰逢张献忠领导的义军途径白毓公的家乡,生计无着的他毅然投身义军,从此踏上征战之路。因其作战勇敢,深得张献忠赏识。至崇祯十七年,也就是1644年,张献忠在四川建立起大西政权,依例对麾下将士论功行赏。白毓公凭借过往战功,被晋升为前军都督,虽位列大西军四大将领孙可望、李定国、刘文秀、艾能奇之后,但亦是军中不可或缺的重要人物。
1646年,即顺治三年,清朝肃亲王豪格统领十万兵马进军四川。在此战役中,张献忠遭清军箭矢所伤,不幸身亡,其领导的大西政权迅速崩溃。清军借此机会,成功占领四川。与此同时,白文选随同孙可望、李定国、刘文秀等人,带领大西军的残余力量向南方云贵地区撤退,并以该地作为据点,持续进行抗清斗争。随后,清军大规模南下,目标直指广西境内的南明永历政权。为了集合所有可联合的力量,孙可望与李定国决定将永历帝朱由榔迎至云南,与永历政权携手对抗清军。此举极大地鼓舞了抗清的士气,使得抗清形势有所好转。
顺治七年,即公元1650年,南明军队着手进行反击,白文选协同刘文秀成功光复了四川的大部分区域。到了顺治九年,也就是1652年的三月,吴三桂进军四川,白文选在永宁,现今的四川叙永,与吴三桂交战,结果不利。同年八月,白文选再次从遵义出发,成功夺回重庆,并斩杀清军副将潘应龙。然而,随着吴三桂大军向南推进,白文选和刘文秀被迫撤退至重庆固守。同年十一月,白文选带兵收复辰州,现今的湖南怀化,生擒并斩杀了清军总兵徐勇,常德的守将胡茂桢也开城投降,这一战让白文选声名远扬。到了顺治十三年,即1656年,孙可望有了称帝的念头,但又担心李定国会反对,于是命令白文选将南明永历帝朱由榔“带往”自己的根据地贵州,意图通过控制皇帝来号令其他势力。尽管白文选是孙可望的部下,但他并不赞同这一做法。白文选认为,孙可望的这一举动将引发南明内部纷争,最终可能导致抗清力量的全面瓦解。
随后,白文选未经许可,将朱由榔转移至李定国的管理区域,并亲自前往贵阳,力劝孙可望应以抗击清朝为重。然而,孙可望并未采纳此建议,反而剥夺了白文选的军事指挥权,并将其囚禁。1657年,即顺治十四年,孙可望自封皇帝,并率领十四万大军向昆明进发。在马宝的建议下,孙可望决定重新启用白文选,命其与马宝一同担任先锋,攻打昆明。但白文选抵达前线后,立即指挥部队转向,向孙可望的士兵阐述大义。在他的影响下,孙可望的士兵纷纷改变立场。见局势无法挽回,孙可望选择逃跑,不久之后向清朝投降,并被清朝册封为义王。
事后,永历帝赐予白文选巩昌王的封号,并授予他荡平大将军的官印。那时,刘文秀和艾能奇已经去世,孙可望又投降了清朝,大西军原本的四大将领仅剩李定国。白文选在大西军中的地位因此迅速提升,仅次于李定国,成为了李定国近乎唯一的盟友。孙可望投降清朝后,将云贵的局势详尽告知清廷,于是清廷任命洪承畴为五省总督,统领数十万清军南下。顺治十五年,即公元1658年,白文选率领四万大军驻守七星关,该关位于现今贵州毕节西南的七星山上。清军攻破了这一关隘,白文选只好带着残余部队撤回云南,与李定国会合,两军合计五万余人,这已经是南明的最后一支野战部队。面对清军猛烈的攻势,南明军在云贵地区的多个据点接连失守。永历帝朱由榔因害怕清军,逃往缅甸,但很快就被缅王软禁起来。
白文选凝视着那些与自己并肩作战十多年的士兵们疲惫的身影,眼眶不禁湿润了。他意识到局势已无法挽回,不愿再让手下将士无谓牺牲,于是接受了马宝的劝降,带领麾下万余士兵向清军投降。白文选的这一举动,导致李定国的部队彻底孤立无援,陷入了独自奋战的困境。到了康熙元年(1662年)四月,朱由榔在昆明被吴三桂杀害。同年六月,李定国在得知白文选投降和朱由榔被杀的消息后,悲愤交加,不幸病逝,终年42岁,南明政权随之覆灭。