Git reflog๋ ์ปค๋ฐ ์ญ์ ๋ ๊ฐ์ ๋ฆฌ์ ๊ฐ์ ํ๊ดด์ ์ธ ์์ ์ ํฌํจํ์ฌ ์ ์ฅ์์์ ์ผ์ด๋๋ ๋ชจ๋ ํธ๋์ญ์ ์ ๊ธฐ๋กํ๋ Git์ ์ผ์ง/๊ฐ์ฌ ๋ฉ์ปค๋์ฆ์ ๋๋ค.
๋ถ์ธ ์ฑ๋ช ํ๊ตญ์ด ์ค๋ ฅ์ด ๋ถ์ ํ์ฌ ์ด ๊ธ์ด ๊ตฌ๊ธ ๋ฒ์ญ๊ธฐ๋ฅผ ์ฃผ๋ก ํ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ถ์ ํํ ๋ฌธ๋ฒ๊ณผ ์ดํ๊ฐ ์์์ ์์ต๋๋ค. ์ด ์ ์ํด ๋ถํ๋๋ฆฌ๋ฉฐ, ์ถํ์ ๋ค์ ๊ฒํ ํ์ฌ ์์ ํ๋๋ก ํ๊ฒ ์ต๋๋ค.
์ญ์ ๋ ์ปค๋ฐ ๋ณต๊ตฌํ๊ธฐ
์ด ์น์ ์ Git ๋ก๊ทธ ์์ ๋ฅผ ํตํด ์ญ์ ๋ ์ปค๋ฐ์ ๋ณต๊ตฌํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค.
git log --oneline๊ทธ๋ฌ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๋ก๊ทธ๊ฐ ํ์๋ฉ๋๋ค.
30b387b (HEAD -> master) feat: Add paths
b786463 feat: Write source code
44927b6 feat: Add increment age
9c98d0a docs: Include README
cf456d2 feat: Use variables
cb4ca4b initial๊ทธ ๋ค์ ์ปค๋ฐ๋ค์ด ๋ ์ด์ ๊ด๋ จ์ฑ์ด ์๋ค๊ณ ์๊ฐํ์ฌ ์ฝ๋๋ฒ ์ด์ค๋ฅผ 44927b6 feat: Add increment age๋ก ๋ฆฌ์
ํฉ๋๋ค.
git reset --hard 44927b6์ด์ ๋ก๊ทธ๋ ๋ค์๊ณผ ๊ฐ์ด ๋ณด์ผ ๊ฒ์ ๋๋ค.
44927b6 (HEAD -> master) feat: Add increment age
9c98d0a docs: Include README
cf456d2 feat: Use variables
cb4ca4b initial๊ทธ๋ฐ๋ฐ ๋์ค์ ์ด ์ปค๋ฐ๋ค์ด ์ค์ ๋ก๋ ์ค์ํ๋ค๋ ๊ฒ์ ๊นจ๋ซ๊ณ ๋ณต๊ตฌํ๊ณ ์ถ์ ๋๊ฐ ์์ต๋๋ค. ๋ฐ๋ก ์ด๋ git reflog๊ฐ ์ ์ฉํฉ๋๋ค.
git reflog์ด๊ฒ์ด reflog ์ถ๋ ฅ์ ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์ ์ฅ์์์ ์ผ์ด๋ ๋ชจ๋ ์์ ์ ์์ ํ ๊ฐ์ฌ ์ถ์ ์ ์ ๊ณตํฉ๋๋ค.
44927b6 (HEAD -> master) HEAD@{0}: reset: moving to 44927b6
30b387b HEAD@{1}: commit: feat: Add paths
b786463 HEAD@{2}: commit: feat: Write source code
44927b6 (HEAD -> master) HEAD@{3}: rebase (finish): returning to refs/heads/master
44927b6 (HEAD -> master) HEAD@{4}: rebase (pick): feat: Add increment age
9c98d0a HEAD@{5}: rebase (reword): docs: Include README
c669e31 HEAD@{6}: rebase: fast-forward
cf456d2 HEAD@{7}: rebase (start): checkout HEAD~2
9b38d32 HEAD@{8}: commit: feat: Add increment age
c669e31 HEAD@{9}: commit: readme
cf456d2 HEAD@{10}: rebase (finish): returning to refs/heads/master
cf456d2 HEAD@{11}: rebase (start): checkout HEAD~1
cf456d2 HEAD@{12}: rebase (finish): returning to refs/heads/master
cf456d2 HEAD@{13}: rebase (start): checkout HEAD~1
cf456d2 HEAD@{14}: commit: feat: Use variables
cb4ca4b HEAD@{15}: commit (initial): initial์ด ๊ฒฝ์ฐ ๋ณต๊ตฌํ๋ ค๋ ์ปค๋ฐ์ ํด์ 30b387b๋ฅผ ์ป์๊ณ ์ด๊ฒ์ด ์ค์ํ ๋ถ๋ถ์
๋๋ค. ์ด ์ปค๋ฐ๋ค์ ํฌํจํ ์ ๋ธ๋์น๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
git branch chore/restore-commits 30b387b๊ทธ๋ฌ๋ฉด ์ปค๋ฐ๋ค์ ๋ค์ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.
30b387b (HEAD -> chore/restore-commits) feat: Add paths
b786463 feat: Write source code
44927b6 (master) feat: Add increment age
9c98d0a docs: Include README
cf456d2 feat: Use variables
cb4ca4b initial์ญ์ ๋ ๋ธ๋์น ๋ณต๊ตฌํ๊ธฐ
์์์ ๋ง๋ ๋ธ๋์น์ ์๋ก์ด ์ปค๋ฐ์ด ์๋ค๊ณ ๊ฐ์ ํฉ์๋ค.
7f6fe3e (HEAD -> chore/restore-commits) feat: Add filename to path for source
30b387b feat: Add paths
b786463 feat: Write source code
44927b6 (master) feat: Add increment age
9c98d0a docs: Include README
cf456d2 feat: Use variables
cb4ca4b initialmaster ๋ธ๋์น๋ก ์ฒดํฌ์์ํ ํ ์ค์๋ก ์ ์ปค๋ฐ๋ค์ด ์๋ ๋ธ๋์น๋ฅผ ์ญ์ ํ์ต๋๋ค.
git branch -D chore/restore-commits์ด์ reflog๋ฅผ ํ์ธํด๋ด ์๋ค.
44927b6 (HEAD -> master) HEAD@{0}: checkout: moving from chore/restore-commits to master
7f6fe3e HEAD@{1}: commit: feat: Add filename to path for source
30b387b HEAD@{2}: checkout: moving from master to chore/restore-commits
44927b6 (HEAD -> master) HEAD@{3}: reset: moving to 44927b6
30b387b HEAD@{4}: commit: feat: Add paths
b786463 HEAD@{5}: commit: feat: Write source code
44927b6 (HEAD -> master) HEAD@{6}: rebase (finish): returning to refs/heads/master
44927b6 (HEAD -> master) HEAD@{7}: rebase (pick): feat: Add increment age
9c98d0a HEAD@{8}: rebase (reword): docs: Include README
c669e31 HEAD@{9}: rebase: fast-forward
cf456d2 HEAD@{10}: rebase (start): checkout HEAD~2
9b38d32 HEAD@{11}: commit: feat: Add increment age
c669e31 HEAD@{12}: commit: readme
cf456d2 HEAD@{13}: rebase (finish): returning to refs/heads/master
cf456d2 HEAD@{14}: rebase (start): checkout HEAD~1
cf456d2 HEAD@{15}: rebase (finish): returning to refs/heads/master
cf456d2 HEAD@{16}: rebase (start): checkout HEAD~1
cf456d2 HEAD@{17}: commit: feat: Use variables
cb4ca4b HEAD@{18}: commit (initial): initial๋ ๋ฒ์งธ ์ค์ ๋ธ๋์น๊ฐ ์ญ์ ๋์ด ์์ค๋ ์ปค๋ฐ์ด ์์์ ์ฃผ๋ชฉํ์ธ์. ์ด ๋ก๊ทธ๋ฅผ ์ฌ์ฉํด ๋ธ๋์น๋ ๋ณต๊ตฌํ ์ ์์ต๋๋ค.
git branch chore/restored-branch 7f6fe3e
git checkout chore/restored-branch๋คํํ ์์ค๋ ๋ธ๋์น๋ฅผ ๋ค์ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.
7f6fe3e (HEAD -> chore/restored-branch) feat: Add filename to path for source
30b387b feat: Add paths
b786463 feat: Write source code
44927b6 (master) feat: Add increment age
9c98d0a docs: Include README
cf456d2 feat: Use variables
cb4ca4b initial