전국 7웅 사이에서, 진나라는 정치·경제·문화 전반에 걸쳐 중원 제후국들보다 뒤떨어져 있었다. 인접한 위나라가 진나라보다 강해, 하서(河西)의 광대한 지역까지 빼앗아갔다.
기원전 361년, 진나라의 새로운 군주인 진효공이 즉위했다. 그는 분발하여 나라를 부강하게 만들 결심을 하고, 우선 인재를 모았다. 그는 명령을 내려 말하기를, "진나라 사람이든 외부 사람(객사)이든, 누구든지 진나라를 부강하게 할 방도를 마련할 수 있다면 벼슬을 주겠다"고 하였다.
진효공이 이렇게 호소하자, 과연 많은 유능한 인물들이 모여들었다. 위나라 귀족 공손양(훗날 상양)은 위나라에서 중용되지 못하고 진나라로 달려와, 누군가에게 소개를 받아 진효공의 접견을 받았다.
상양이 진효공에게 말했다. "한 나라가 부강해지려면 반드시 농업에 주목하고 장병들을 포상해야 하며, 나라를 잘 다스리려면 반드시 상벌이 있어야 합니다. 상벌이 확실하면 조정에 위신이 서고, 모든 개혁도 쉽게 진행될 수 있습니다."
진효공은 상양의 주장을 완전히 동의했다. 그러나 진나라의 일부 귀족과 신하들은 극력 반대했다. 진효공은 반대하는 사람이 이토록 많음을 보고, 자신이 막 즉위한 터라 소요가 일어날까 걱정되어 개혁 사업을 당분간 미뤄두었다.
2년 후, 진효공의 자리는 안정되었고, 그는 상양을 좌서장(좌서장: 진나라의 관직 이름)으로 임명하며 말했다. "오늘부터 개혁 제도 관련 모든 일은 전적으로 좌서장이 결정하도록 하겠다."
상양은 개혁 법령을 초안했지만, 백성들이 자신을 믿지 않아 새 법령을 따르지 않을까 걱정되었다. 그래서 먼저 수도 남문에 3장 높이의 나무 기둥을 세우고 명령을 내렸다. "누구든지 이 나무 기둥을 북문까지 옮기는 자에게는 10냥의 금을 상으로 주겠다."
잠시 후, 남문에는 많은 사람들이 몰려들어 수군거리며 이야기했다. 어떤 이는 "이 나무 기둥은 누구나 들 수 있는데, 어찌 10냥의 상금이 필요하겠는가?"라고 했고, 또 다른 이는 "좌서장이 고의로 장난치는 것 아닐까?"라고 말했다.
사람들은 서로 얼굴만 쳐다볼 뿐, 아무도 나무를 메고 가려는 사람은 없었다.
상양은 백성들이 아직 자신의 명령을 믿지 않는다는 것을 알고, 상금을 50냥으로 올렸다. 그런데 상금이 높아질수록 구경꾼들은 더 이상하게 느끼며 여전히 아무도 메고 가지 않았다.
사람들이 수군거리던 중, 군중 속에서 한 사람이 튀어나와 말했다. "내가 한번 해보겠습니다." 하면서 실제로 나무 기둥을 어깨에 메고 걸어가 북문까지 옮겼다.
상양은 즉시 사람을 보내어, 나무를 메고 간 사람에게 황금 50냥을 한푼도 빠짐없이 상으로 주었다.
이 사건은 금세 퍼져나가, 진나라 전체를 떠들썩하게 만들었다. 백성들은 말했다. "좌서장의 명령은 틀림없다."
상양은 자신의 명령이 이미 효과를 발휘했다는 것을 알고, 초안한 새로운 법령을 곧바로 공포했다. 새로운 법령은 상벌이 명확하였으며, 관직의 크기와 작위의 높낮이를 전공(전쟁에서 세운 공)을 기준으로 정했다. 귀족이라 하더라도 군공이 없으면 작위를 주지 않았고, 곡식과 천을 많이 생산한 자는 복역을 면제받았다. 장사나 게으름 때문에 가난해진 자는 아내와 자식까지 포함해 관청의 노비로 처벌하였다.
진나라는 상양의 변법 이후 농업 생산이 증가하고 군사력도 강화되었다. 곧이어 진나라는 위나라의 서부를 공격하여 하서에서 하동까지 밀고 들어가, 위나라 수도 안읍도 함락시켰다.
기원전 350년, 상양은 두 번째 개혁을 실시했는데, 주요 내용은 다음과 같았다.
일, 우물밭 제도를 폐지하고 간막(간막: 논 사이의 큰 길)을 열어준다. 진나라는 넓은 간막을 평평하게 파헤쳐 농사를 짓고, 이전에 경계를 나누는 용도였던 흙더미, 황무지, 숲, 도랑 등도 모두 개간하였다. 누가 황무지를 개간하면 그 소유권이 귀속되며, 토지는 매매할 수 있었다.
이, 현(縣) 조직을 설치하여 시진과 마을을 통합하여 현으로 구성하고, 국가에서 관리를 파견해 직접 관리한다. 이를 통해 중앙 정권의 권력이 더욱 집중되었다.
삼, 수도를 함양으로 옮긴다. 동쪽으로 진출하기 쉬우도록 원래의 옹성(현재의 산시성 펑샹현)에서 위허북안의 함양(현재의 산시성 함양시 북동쪽)으로 천도하였다.
이처럼 대규모의 개혁은 당연히 격렬한 저항을 불러일으켰다. 많은 귀족과 신하들이 신법을 반대했다. 어느 날 진나라 태자가 법을 어겼다. 상양이 진효공에게 말했다. "국가의 법령은 윗사람과 아랫사람이 모두 똑같이 준수해야 합니다. 위에 있는 사람이 지키지 못하면 아래 있는 사람들이 조정을 신뢰하지 못합니다. 태자가 법을 어겼다면, 그 스승들도 벌을 받아야 합니다."
결국 상양은 태자의 두 스승인 공자 허와 공손 가를 모두 처벌했는데, 하나는 코를 잘랐고, 다른 하나는 얼굴에 문자를 새겼다. 이로 인해 일부 귀족들과 신하들은 감히 신법을 어기지 못하게 되었다.
이렇게 10년이 지나자, 진나라는 정말로 점점 더 부강해졌고, 주천자는 사신을 보내 제육을 진효공에게 보내며 그를 '방백'(一方諸侯의 수장)으로 봉했다. 중원의 제후국들도 줄줄이 진나라에 축하를 보냈다. 위나라는 하서 땅을 양도하지 않을 수 없었고, 수도를 대량(현재의 허난성 카이펑)으로 옮겼다.