git diff
โ diff๋ ๋ฌด์์ด๊ณ ์ธ์ ์ฌ์ฉํ๋์ง ?
git diff : ๋ณ๊ฒฝ๋ด์ญ๋ค๋ผ๋ฆฌ์ ๋น๊ต ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฌ์ค๋ค.
์๋ฅผ ๋ค๋ฉด, ์ฐ๋ฆฌ๊ฐ ๋ฒ์ ์ ๊ด๋ฆฌํ๋ ๋์ค์ ๋ค์๊ณผ ๊ฐ์ ์ํฉ์ด ์์ ์ ์๋ค.
1. 10๋ฒ ์ปค๋ฐ์ค 1๋ฒ ์ปค๋ฐ๊ณผ 2๋ฒ ์ปค๋ฐ์ ๋น๊ตํ๊ณ ์ถ๋ค.
2. ์ง๊ธ pushํ commit๊ณผ ์ด์ commit์ ๋น๊ตํ๊ณ ์ถ๋ค.
3. ํ์ฌ staging area์ ์๋ ๋ณ๊ฒฝ ๋ด์ญ๊ณผ ์ง์ ์ commit์ ๋น๊ตํ๊ณ ์ถ๋ค.
4. branch1 ๋ธ๋์น์ ์๋ commit๊ณผ main ๋ธ๋์น์ ์๋ commit์ ๋น๊ตํ๊ณ ์ถ๋ค.
์ด๋ด ๋, ์ฌ์ฉํ ์ ์๋๊ฒ diff์ด๋ค. ๋ง ๊ทธ๋๋ก ํจ์น๊ฐ์ ์ฐจ์ด์ ์ ์ ์ ์๊ฒ ํด์ฃผ๋ ๊ฒ์ด๋ค.
โ ๋ ์ปค๋ฐ๊ณผ์ ๋น๊ต
ํ์ฌ ์ ์ฅ์์ test.txt ํ๋ ์๊ณ 1๋ฒ๋ถํฐ 5๋ฒ๊น์ง commit์ด ์์ผ๋ฉฐ, ๊ฐ๊ฐ์ commit์ ๋ค์๊ณผ ๊ฐ๋ค๊ณ ๊ฐ์ ํ๋ค.
1๋ฒ commit : text.txt์ A๋ผ๋ ๋ฌธ์์ด ํ๋ ์ ์ฅ
2๋ฒ commit : text.txt์ B๋ฌธ์ ์ถ๊ฐ
3๋ฒ commit : text.txt์ C๋ฌธ์ ์ถ๊ฐ
4๋ฒ commit : text.txt์ D๋ฌธ์ ์ถ๊ฐ
5๋ฒ commit : text.txt์ E๋ฌธ์ ์ถ๊ฐ
์ฌ๊ธฐ์ ๊ฐ๊ฐ์ commit๋ค ๋ด์ญ์ ๋ณด๊ธฐ ์ํด์๋ git log ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ํ์ธํ๋ค.
์ฌ๊ธฐ์ log๋ฅผ ์ฐ์ผ๋ฉด ๋ค์๊ณผ ๊ฐ์ ํ๋ฉด์ ๋ณผ ๊ฒ์ด๋ค.
$ git log
commit f7fe32715c4bd705110196134271d8f873384316 (HEAD -> master) Author: Kang Minchul <tegongkang@gmail.com> Date: Tue Dec 1 23:06:03 2020 +0900
5
commit 2845ce53054627b3381c9f2515dc7545cff2347b Author: Kang Minchul <tegongkang@gmail.com> Date: Tue Dec 1 23:05:49 2020 +0900
4
commit de6d5c1148981e15617999c7ecaa6ec2ea21ff29 Author: Kang Minchul <tegongkang@gmail.com> Date: Tue Dec 1 23:05:38 2020 +0900
3
commit 1d7fce052aafb388ddf092ea315835f5154683f7 Author: Kang Minchul <tegongkang@gmail.com> Date: Tue Dec 1 23:04:52 2020 +0900
2
commit 6958b6b21e15aa0be36736016c5bc955b57a61be Author: Kang Minchul <tegongkang@gmail.com> Date: Tue Dec 1 23:04:38 2020 +0900
1
commit ์์ ์๊ธด ๋ฌธ์์ด(f7fe32715c4bd705110196134271d8f873384316 ๋ฑ๋ฑ…)
์ด๊ฑด ๊ฐ๊ฐ์ commit์ ๋ํ๋ด๋ commit hash์ด๋ค. ์ด commit์ ๊ฐ๋ฆฌํค๋๊ฒ์ด๋ผ๊ณ ๋ณด๋ฉด ๋๋ค.
์, ์ฌ๊ธฐ์ git diff๋ฅผ ์ด์ฉํด 5๋ฒ commit์ด 4๋ฒ commit์ ๊ธฐ์ค์ผ๋ก ๋ฌด์์ด ๋ฐ๋์๋์ง ํ์ธํ๋ ค๋ฉด ์ด๋ป๊ฒํด์ผ ํ ๊น ?
git diff๋ ์๋์ ๊ฐ์ ๋ช ๋ น์ด๋ก ์ฌ์ฉํ ์ ์๋ค.
์ฝ๊ฒ ๋งํด์
๋ผ๊ณ ๋ณด๋ฉด ๋๋ค. ์ฐ๋ฆฌ๊ฐ ๋น๊ตํ ๊ฒ์ 4๋ฒ commit์ ๋นํด 5๋ฒ commit์ด ๋ฌด์์ด ๋ฌ๋ผ์ก๋์ง ํ์ธํ๋ ค๋๊ฑฐ๋๊น
์ด๋ ๊ฒ ์์ฑํ๋ฉด ๋๋ค.
๊ทธ๋ผ ์๋์ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ณผ ์ ์๋ค.
์ด๋ ๊ฒ ์ฌ์ฉํ๋ฉด ๋๋ค.
โ ์๊ฒฉ ์ ์ฅ์์ ๋ก์ปฌ ์ ์ฅ์ ๊ฐ์ ๋น๊ต
์์ ๊ฐ์ ์ฌ์ฉ์๋ ์๊ฒฉ ์ ์ฅ์์์๋ ๋์ผํ๊ฒ ์ ์ฉํ ์ ์๋ค. ์๋ ์ฒ๋ผ๋ง์ด๋ค.
โ ์ด์ commit๊ณผ ์ ์ commit์ ๋น๊ต
๊ทผ๋ฐ ๋งค๋ฒ ์ด๋ ๊ฒ commit hash๋ฅผ ์ฐ๋๊ฒ ๊ท์ฐฎ๋ค๋ฉด ์๋์ ๊ฐ์ด ์ฌ์ฉํด๋ ๋๋ค.
HEAD๋ ํ์ฌ branch๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ฐ์ฅ ์ต๊ทผ commit, HEAD^๋ ํ์ฌ branch์ ๊ฐ์ฅ ์ต๊ทผ commit์์ ํ๋ ์ด์ commit์ ๊ฐ๋ฆฌํค๋ฏ๋ก,
์ฐธ๊ณ ๋ก HEAD์์ ^์ ๊ฐ์๋ ํ์ฌ commit์์ ๋ช ๋ฒ์งธ ๋จ์ด์ง commit์ธ์ง๋ฅผ ๋ํ๋ธ๋ค. HEAD^^ ๋ผ๊ณ ์ฐ๋ฉด ๊ฐ์ฅ ์ต๊ทผ commit์์ ๋ ๊ฐ ์ด์ commit ์ ์๋ฏธํ๋ค.
์ ๋ช ๋ น์ด๋ ์ด์ commit(5๋ฒ)๊ณผ ์ ์ commit(4๋ฒ)์ ๋น๊ตํ๋ผ๋ ๋ช ๋ น์ด์ด๋ค.
๋ฐ๋ผ์ ๋ค์๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ ์ ์๋ค.
โ ์ด์ commit๊ณผ ํ์ฌ ์์ ๋ ๋ด์ฉ ๋น๊ต
์์ง commitํ์ง ์์, ์์ ๋ ๋ด์ฉ๊ณผ ์ด์ commit(์ ํฌ ์์ ์์๋ 5๋ฒ commit)๊ณผ ๋น๊ตํ๊ธฐ ์ํด ์๋ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
์๋ฅผ ๋ค์ด, test,txt์ F๋ผ๋ ๋ฌธ์๋ฅผ ์ถ๊ฐํ๊ณ ์ ๋ช ๋ น์ด๋ฅผ ์น๋ค๋ฉด ์๋์ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์๋ณผ ์ ์๋ค.
์ฆ, ์์ง commitํ์ง ์์ ํ์ฌ ์์ ์ค์ธ ๋ด์ฉ์ ๊ฐ์ฅ ์ต๊ทผ commitํ ๋ด์ฉ๊ณผ ๋น๊ตํ ๊ฒฐ๊ณผ๋ผ๊ณ ๋ณผ ์ ์๋ค.
โ ๋ธ๋์น๊ฐ์ ๋น๊ต
๊ทธ๋ฆฌ๊ณ ์๋์ ๋ช ๋ น์ด๋ฅผ ํตํด ๋ํ branch๋ผ๋ฆฌ์ ๋น๊ต๋ ๊ฐ๋ฅํ๋ค.
git revert
โ revert๋ ๋ฌด์์ธ๊ฐ
git revert๋ reset๊ณผ ๋์ผํ๊ฒ commit์ ๋๋๋ฆฌ๋ ๋ช ๋ น์ด์ด๋ค.
git revert <๋๋๋ฆฌ๊ณ ์ถ์ commit>์ผ๋ก ์์ฑํ ์ ์๋ค.
๊ฐ๋จํ๊ฒ ์์๋ฅผ ๋ค๋ฉด, ์ ์์์์ 3๋ฒ commit์ revertํ์ฌ ๋๋๋ฆฌ๊ณ ์ถ๋ค๋ฉด
์ด๋ ๊ฒ ์์ฑํ๋ฉด ๋๋ค.
โ reset๊ณผ ์ฐจ์ด๋ ?
git reset๊ณผ git revert๋ commit์ ๊ณผ๊ฑฐ ์์ ์ผ๋ก ๋๋๋ ค์ค๋ค๋ ์ ์์ ๊ฒฐ๊ณผ์ ์ผ๋ก ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ด์ง๋ง, ํฐ ์ฐจ์ด๊ฐ ์๋ค๋ฉด ๋๋๋ฆฌ๋ commit๊น์ง์ ์ด๋ ฅ์ด ์ฌ๋ผ์ง๋๋์ ์ฌ๋ถ์ ์๋ค.
git reset์ ๋๋๋ฆฐ ๋ฒ์ ์ดํ์ ๋ฒ์ ๋ค์ด ๋ชจ๋ ์ฌ๋ผ์ง๊ฒ ๋์ง๋ง, git revert๋ ๋๋๋ฆฐ ๋ฒ์ ์ดํ์ ๋ฒ์ ๋ค์ ๋ชจ๋ ์ ์ง๋๊ณ , revert๋์๋ค๋ ์ฌ์ค์ ๋ด์ commit๋ง ์๋ก ์ถ๊ฐ๋๊ฒ ๋๋ค.
์๋ฅผ ๋ค์ด, 3๋ฒ commit์ผ๋ก reset์ ํ๋ฉด 4,5๋ฒ commit์ ์ญ์ ๋์ง๋ง 3๋ฒ commit์ผ๋ก revert๋ฅผ ํ๋ฉด 4,5๋ฒ commit์ ๊ทธ๋๋ก ์ ์ง๋๋ค.
์ฆ, reset์ ๊ณผ๊ฑฐ ์์ฒด๋ฅผ ๋ฐ๊พธ๋ ๋ช ๋ น์ด์ด๊ณ revert๋ ๊ณผ๊ฑฐ๋ฅผ ๋ณ๊ฒฝ์์ผฐ๋ค๋ ์๋ก์ด commit์ผ๋ก์จ ์๋ก์ด commit์ ๋ง๋๋ ๋ช ๋ น์ด๋ผ๊ณ ๋ณด๋ฉด ๋๋ค.
์ค์ฉ์ ์ธ ์ธก๋ฉด์ผ๋ก ๋ดค์๋ revert๋ reset๋ณด๋ค ๋ ์์ ํ๊ฒ commit์ ๋๋๋ฆฌ๋ ๋ฐฉ๋ฒ์ด๊ณ ,
reset์ revert๋ณด๋ค commit log๋ฅผ ๋ ๊น๋ํ๊ฒ ์ ์งํด์ฃผ๋ฉฐ commit์ ๋๋๋ฆฌ๋ ๋ฐฉ๋ฒ์ด๋ผ๊ณ ํ ์ ์๋ค.
์ด ๊ธ์์๋ ์ผ๋ฐ์ ์ธ ๊ด์ ์์ reset๊ณผ ๋น๊ตํ์ ๋์ ์ด์ผ๊ธฐ์ด๊ธด ํ์ง๋ง,
-n ์ต์ ์ ์ด์ฉํ๋ฉด revert๋ฅผ ์จ๋ commit์ ๋จ๊ธฐ์ง ์์ ์๋ ์๋ค.
๐ ์ถ์ฒ
https://www.inflearn.com/course/%EB%B9%A0%EB%A5%B4%EA%B2%8C-git
'๐ป > Git&Github' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Git/Github] ํ์ ์๋๋ฆฌ์ค (0) | 2024.03.11 |
---|---|
[Git/Github] Github ํ์ : remote / push / pull / fetch / clone (0) | 2024.03.10 |
[Git/Github] ๋ฒ์ ์ ๋๋๋ฆฌ๊ณ ๋๋๊ธฐ : reset / branch (0) | 2024.03.10 |
[Git/Github] ๋ฒ์ ๊ด๋ฆฌ ์์ : add / commit / push (0) | 2024.03.09 |