晋师建制,由二军而三军而五军,又减为三军,然三军是其常。城濮之战、邲之战皆以三军。三军布阵,杜预、孔颖达皆以为中军居中,上军在左,下军在右。宣公十二年《传》“晋师右移”,孔《疏》说:“晋之三军,上军在左,中军在中,下军在右。言晋之中军、下军败走,在上军之右者皆移,唯上军未动。”若如此说,晋、楚对阵,是晋上军居左对楚右师,晋下军居右对楚左师。僖公二十八年城濮之战,《傳》曰:“己巳,晋师陈于莘北,胥臣以下军之佐当陈、蔡。子玉以若敖之六卒将中军,曰:‘今日必无晋矣。子西将左, 子上将右。胥臣蒙马以虎皮,先犯陈、蔡。陈、蔡奔,楚右师溃。狐毛设二斾而退之。栾枝使舆曳柴而伪遁,楚师驰之,原轸、郄溱以中军公族横击之。狐毛、狐偃以上军夹攻子西, 楚左师溃。”晋中军帅、佐是原轸、郄溱,上军将、佐是狐毛、狐偃,下军将、佐是栾枝、胥臣。楚左师将是子西,右师将是子上。胥臣以下军佐部冲楚右师所属之陈、蔡,陈、蔡奔,楚右师溃,见晋下军所对是楚右师。若如孔《疏》所说,晋下军居右,而楚右师在晋的斜对面,胥臣若攻楚右师,则须经中军斜冲过去,不合常理。
清朱一新《无邪堂答问》曰:“《传》云工尹齐将右拒卒以逐下军,潘党从唐侯以为左拒,以从上军。城濮之役,胥臣以下军之佐当陈、蔡,楚右师溃,狐偃以上军夹攻子西,楚左师溃,是知上军在右,当楚之左;下军在左,当楚之右。《正义》之言非也。”晋师何以上军居右?朱一新说“兵事尚右。《老子》言‘偏将军居左,上将军居右。晋之上军宜在右,下军宜在左。而楚人则尚左,随季梁固明言之。”季梁语见桓八年:“楚人上左。”朱说似当为有理。不过,以楚尚左释楚左师对晋上军,恐未必,盖两军对陈,一方之左,适当对方之右,故楚左师对晋上军,右师对晋下军。桓五年,郑伯御王师,为左拒以当右军,为右拒,以当左军可证,非郑尚左也。
宣十二年《传》言“晋师右移”,朱一新以为晋师奔者皆傍上军而去,然观荀林父号令“先济者有赏”,似右移指中军、下军败而渡河。日本龟井煜《缵考》说盖河水在右,中军、下军皆崩而右移也。可参。