贺子达和姜佑生从小在乡下一起长大,一起参军,到1947年的时候,已经都是旅长。贺子达的妻子杨怡和姜佑生的妻子楚风屏也是好友,都在姜所部担任机要员。一天,上级密电姜佑生,杨怡曾在白区工作时被捕叛变,人证物证俱全,令姜相机处置。姜数次核实无误,决定带怀孕的杨怡突围,待其生下孩子后,执行枪决。突围中,杨怡生下一子,并用丈夫贺子达曾经送给他的礼物——小手枪——自杀。该子被一个叫根儿的山民所救,取名张根生。但姜佑生和楚风屏都以为贺、杨的儿子已死于战火中。而贺子达得知妻儿俱死在姜佑生手上,更与姜结下仇怨。楚风屏为安慰贺子达,谎称其子还活着,把自己刚刚出生但未在身边的儿子送给贺子达。
楚风屏生子前,房东田大年之妻也生下一子,分别取名大碾子、小碾子。部队继续打仗,姜、楚的儿子小碾子托付田妻抚养。全国解放后,田妻为让亲子大碾子过上好日子,竟将其谎称为姜佑生和楚风屏的儿子小碾子,掉包后还给姜家,于是,蒙在鼓里的楚风屏送给贺子达的儿子也并非姜家亲生。
抗美援朝前,贺子达爱上一个叫谢石娥的村姑,并发生关系。贺子达和姜佑生赴朝参战时,石娥发现自己怀孕。为使贺子达不背上作风问题的包袱,毅然远赴湖南林场,并与贺子达断绝了音信。战争中,姜佑生最赏识的军人李兆魁成为战俘。
文革前夕,孩子们都已长大,养在贺家但被被姜家认定是亲子的大碾子与姜家亲生女儿姜乔乔恋爱了。为阻止这一“乱伦关系”,姜佑生和楚风屏百般阻挠,并不知情的贺子达却支持两家子女恋爱,双方为子女婚事再生情怨。大碾子热爱海军,在海陆联合演习时跳海欲上军舰,被炮弹震昏,漂流荒岛。两家都以为亲子死亡,俱痛不欲生;在此情况下,楚风屏告知贺子达,大碾子其实是她和姜佑生的儿子。但大碾子又“死而复生”,其与乔乔的恋爱也在痛苦中终止。
文革中,贺子达、姜佑生分别被打倒并下放到石娥所在的湖南林场隔离审查。此时石娥与贺子达的私生女儿盼盼已经十四岁,而其父母也旧情复燃。但残酷的政治审查环境和石娥始终怀有的“我不配”自卑心理,使二人终未能成为眷属。此时,楚风屏也因其为走资派而被打倒,孩子们也都成为狗崽子,俱被下放农村,住进被掉包后的姜家亲生儿子小碾子所在的田家。时日既久,掉包真相逐渐揭穿,这不仅使大、小碾子极为痛苦,最痛苦的还是楚风屏。但田妻生怕养子小碾子一旦认了他的亲生父母,田家就会鸡飞蛋打,连一个儿子也留不住,因此咬紧牙关,死不承认掉包之事。最终大碾子参军而走,小碾子继续务农,而楚风屏病在乡下。此前,贺子达真正的亲生儿子、被山民根儿养大的张根生在军校毕业后与乔乔相识并恋爱。张根生追随乔乔下乡,但他从小喜欢读书,上大学是他的梦想。为让情人能上大学,乔乔毅然嫁给掌握知青命运和大学名额的县知青办主任沈二蛋,换取了张根生的上大学名额。张根生百般拦阻未果,在不解和痛苦中伴随重病的楚风屏离开乡下。
文革结束后,贺子达、姜佑生、楚风屏俱复原职。真相大白后的贺子达对姜家为自己所做的一切所感动,说服大碾子改为姜姓。此后,在部队当上连长的大碾子与盼盼恋爱并结婚。从军事大学毕业的张根生在养母去世后获悉身世,但对亲生母亲杨怡竟是用亲生父亲贺子达送给母亲的手枪自杀一事耿耿于怀,因此拒不认父,并在全国掀起的平反冤假错案热潮中,一意为母亲平反。此时,张根生再遇离婚后返城的乔乔,二人联手寻找蛛丝马迹,终于获知杨怡蒙冤真相,并在这种联合查访中再生情愫。张根生认父后改名贺仪生,并与乔乔结婚。但新婚之夜,贺仪生发现乔乔仍是处女,玩笑中伤害了乔乔的感情,使这一基础并不牢固的婚姻产生裂痕。乔乔愤然出国留学,且一去就是六年。
时光荏苒,1985年中国百万大裁军,贺子达、姜佑生分别退休,而第二代军人大碾子和贺仪生成长起来,乔乔也学成回国,在世界500强企业霍尔公司就职。霍尔一意娶乔乔为妻,但因心脏病突发死亡。就在这时,抗美援朝时姜佑生最赏识的军人、后来成为战俘并在海外致富的李兆魁为报答姜佑生的恩情,对姜家进行了巨额感情投资,并将投资隐姓埋名归于乔乔名下。但恰逢霍尔之死,使所有人都认为这笔投资是霍尔对乔乔“包二奶”的回报。这一事件使贺仪生与乔乔的感情复合再次成为泡影。此后,贺仪生成长为我军复合型人才,被任命为海军陆战旅旅长,而乔乔始终抱有“总有一天真相大白”的幻想。最后,二人在事业和生活的双重磋砣中,并在李兆魁回国揭穿投资真相后,终于赢得了真正的爱情。但姜佑生、楚风屏真正的亲生儿子小碾子却在农村因开山采石被炸身死,楚风屏闻讯病重,不治而亡。海陆军在现代化的形势下再次联合演习,大碾子和贺仪生大展雄风,而老态龙钟的贺子达和姜佑生回首往事,为一生中留下了这么多的军人机密和不可弥补的遗憾而百感交集。