- Published on
git - reflog
reflog
๐ Git Git์ ์ฌ์ฉํ๋ค ๋ณด๋ฉด ์ค์๋ก ์ปค๋ฐ์ ์ญ์ ํ๊ฑฐ๋, reset --hard
, rebase
๋ฑ์ ๋ช
๋ น์ด๋ก ์ธํด ์ฌ๋ผ์ง ๊ฒ์ฒ๋ผ ๋ณด์ด๋ ์์
์ด๋ ฅ์ ์ฐพ๊ณ ์ถ์ ๋๊ฐ ์๋ค. ์ด๋ด ๋ ์ ์ฉํ๊ฒ ์ฐ์ด๋ ๋ช
๋ น์ด๊ฐ ๋ฐ๋ก git reflog
.
git reflog
๋?
๐ git reflog
๋ ๋ด ๋ก์ปฌ ์ ์ฅ์์์ HEAD๊ฐ ์ด๋ํ ๋ชจ๋ ๊ธฐ๋ก์ ์ถ์ ํ๋ ๋ช
๋ น์ด์
๋๋ค.
git log
๋ ๋ธ๋์น์ ์ปค๋ฐ ์ด๋ ฅ๋ง ๋ณด์ฌ์ฃผ์ง๋งgit reflog
๋ ๋ธ๋์น ์ด๋, ์ปค๋ฐ, reset, merge, rebase ๋ฑ HEAD๊ฐ ๋ณ๊ฒฝ๋ ๋ชจ๋ ํ์ ์ ๋ณด์ฌ์ค๋ค
๐ ์ฆ, Git ๋ด๋ถ ์์ ํ์คํ ๋ฆฌ๋ฅผ ์ถ์ ํ๋ ๋๊ตฌ๋ผ๊ณ ๋ณด๋ฉด ๋ฉ๋๋ค.
๐ง ์ ํ์ํ๊ฐ?
์ํฉ | ํด๊ฒฐ |
---|---|
reset ํ ์ปค๋ฐ ๋ ๋ฆผ | ์ด์ ์ปค๋ฐ ์์น ํ์ธ ํ ๋ณต๊ตฌ ๊ฐ๋ฅ |
rebase ์คํจ | rebase ์ ์ํ๋ก ๋์๊ฐ๊ธฐ |
์ปค๋ฐ ๋ฎ์ด์ฐ๊ธฐ (--amend ) | ๋ฎ๊ธฐ ์ ์ปค๋ฐ ๋์ด๋ฆฌ๊ธฐ |
์๋ชป๋ ๋ธ๋์น ์์ | ์ด๋์๋ถํฐ ์์ ํ๋์ง ์ถ์ ๊ฐ๋ฅ |
๐ป ๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ
git reflog
or
# ํน์ ๋ธ๋์น์ reflog ๋ณด๊ธฐ
git reflog show {branch-name}
์์ ์ถ๋ ฅ:
c2f8a7f (HEAD -> main) HEAD@{0}: commit: Fix typo
a7f56d1 HEAD@{1}: reset: moving to HEAD~1
b1c9d9e HEAD@{2}: checkout: moving from feature to main
HEAD@{0}
: ๊ฐ์ฅ ์ต๊ทผ HEAD ์ํHEAD@{1}
: ๊ทธ ์ด์ ์ํ- ์ค๋ฅธ์ชฝ ์ค๋ช : ์ด๋ค ๋์์ด ์์๋์ง ๋ณด์ฌ์ค
๐ก ์ปค๋ฐ ๋์ด๋ฆฌ๊ธฐ ์์
git reset --hard HEAD~1 # ์ค์๋ก ์ปค๋ฐ ์ญ์
git reflog # ์ด์ ์ปค๋ฐ SHA ํ์ธ
git reset --hard a7f56d1 # ๋์ด๋ฆฌ๊ธฐ!
๐๏ธ ์ถ๋ ฅ ํฌ๋งท ์ปค์คํฐ๋ง์ด์ง
๋ ๋ง์ ์ ๋ณด(๋ ์ง, ๋ฉ์์ง ๋ฑ)๋ฅผ ๋ณด๊ณ ์ถ๋ค๋ฉด --pretty
์ต์
์ ์ฌ์ฉํฉ๋๋ค.
โ ๋ ์ง ํฌํจํด์ ๋ณด๊ธฐ
git reflog --pretty="%h | %ad | %gs" --date=iso
์ถ๋ ฅ ์์:
c2f8a7f | 2024-03-19 20:22:55 +0900 | commit: Fix typo
a7f56d1 | 2024-03-19 20:15:11 +0900 | reset: moving to HEAD~1
ํฌ๋งท ์ฝ๋ | ์๋ฏธ |
---|---|
%h | ์งง์ ์ปค๋ฐ ํด์ |
%ad | ์์ฑ ๋ ์ง |
%gs | reflog ์ค๋ช (subject) |
๐งช ์ ์ฉํ alias ๋ฑ๋ก
git config --global alias.reflogf "reflog --pretty='%h | %ad | %gs' --date=iso"
์ด์ git reflogf
๋ก ์์ฃผ ์ฐ๋ ํํ๋ก ํ์ธํ ์ ์์ด์.
๐ ์ฃผ์์ฌํญ
reflog
๋ ๋ก์ปฌ ์ ์ฅ์์๋ง ์กด์ฌ- ์๊ฐ์ด ์ค๋ ์ง๋๊ฑฐ๋
git gc
(garbage collection) ์ดํ ์ผ๋ถ ํ์คํ ๋ฆฌ๊ฐ ์ฌ๋ผ์ง ์ ์์
โ ์ ๋ฆฌ
ํญ๋ชฉ | ๋ด์ฉ |
---|---|
์ญํ | HEAD ์ด๋ ๊ธฐ๋ก ์ถ์ |
ํ์ฉ | ์ปค๋ฐ ๋ณต๊ตฌ, ๋ธ๋์น ์ถ์ , reset/rebase ์ฌ๊ณ ๋ณต๊ตฌ |
์ปค์คํฐ๋ง์ด์ง | --pretty ์ --date ์ต์
์ผ๋ก ์ถ๋ ฅ ํ์ ์กฐ์ ๊ฐ๋ฅ |
์ค๋ฌด ํ | alias ๋ฑ๋กํด์ ๋น ๋ฅด๊ฒ ํ์ธ ๊ฐ๋ฅ |
๐ก
git reflog
๋ "๋ด๊ฐ ๋ญ ์๋ชปํ์ง?" ์ถ์ ๋ ์ ๋ง ์ ์ฉํ ๋ช ๋ น์ด. ๋์ด๋ฆด ์ ์๋ค๊ณ ์๊ฐํ๋ ์ปค๋ฐ๋,reflog
๋๋ถ์ ๊ตฌํ ์ ์๋ค!