πŸ’₯ 지μ˜₯의 κΉƒν„°λ”” - 1일 μ°¨ 볡슡

κ°€μ˜Β·2020λ…„ 12μ›” 19일
0
post-thumbnail

Index

  1. 버전 관리 μ‹œμŠ€ν…œμ΄λž€?
  2. Git, Github?
  3. init, add, commit
  4. λ‚˜μ—κ²Œ λ§žλŠ” GUI μ°ΎκΈ°
  5. 우리의 νŒŒμΌμ€ μ–΄λ–€ μƒνƒœμΌκΉŒ?
  6. head? where am I
  7. reset, revert

1. 버전 관리 μ‹œμŠ€ν…œ(VCS)?

μΈμŠ€νƒ€κ·Έλž¨ λŒμ•„λ‹€λ‹ˆλ‹€κ°€ λ³Έ 지이닀. 귀엽지 μ•Šλ‚˜?

이제 μš°λ¦¬κ°€ μ…‹μ§Έ 돼지라고 μƒκ°ν•΄λ³΄μž. 우리의 λͺ©ν‘œ(milestone)λŠ” νŠΌνŠΌν•˜κ³  μ •κ΅ν•œ λ²½λŒμ§‘μ„ μ§“λŠ” 것이닀. 3일 전에 μ‹œμž‘ν•΄ λΌˆλŒ€λ₯Ό λ§Œλ“€κ³ , κ·Έ λ‹€μŒ λ‚  λ²½λŒμ„ μŒ“κ³  μ˜€λŠ˜μ€ 지뢕을 λ§Œλ“€μ—ˆλ‹€. 이제 문만 달면 μ™„μ„±!

그런데 였늘! 집을 찬찬히 μ‚΄νŽ΄λ³΄λ‹€κ°€ 벽돌이 λΉ„λš€μ–΄μ§„ 것을 λ°œκ²¬ν–ˆλ‹€. μ™„λ²½ν•œ 집을 λ§Œλ“€κΈ° μœ„ν•΄μ„  λ²½λŒμ„ λ‹€μ‹œ μŒ“μ•„μ•Ό ν•˜λŠ”λ°.. ν•˜λ£¨ μ „μœΌλ‘œ 집을 되돌릴 수 μ—†μ„κΉŒ?

μ˜ˆμ‹œ μ§„μž 거지같닀


이 μƒν™©μ—μ„œ 우리λ₯Ό 도와쀄 해결책이 λ°”λ‘œ 버전 관리 μ‹œμŠ€ν…œμ΄ λ˜κ² λ‹€!

버전 관리 μ‹œμŠ€ν…œμ€ μ‹œκ°„μ—¬ν–‰μ΄ κ°€λŠ₯ν•˜κ²Œ ν•΄μ€€λ‹€. μš°λ¦¬κ°€ 집을 지을 λ•Œ λ²„μ „κ΄€λ¦¬μ‹œμŠ€ν…œμ„ μ΄μš©ν–ˆλ‹€λ©΄ λ‹€μ‹œ μ „ λ‚ μ˜ 결과물둜 λ˜λŒμ•„κ°€μ„œ λ²½λŒμ„ λ‹€μ‹œ μŒ“κ³  μ™„λ²½ν•œ 집을 지을 수 μžˆμ—ˆμ„ κ±°λ‹€! μ„€λͺ…은 μ˜ˆμ‹œκ°€ μ•„λ‹Œ μ‹€μ œ λ²„μ „κ΄€λ¦¬μ‹œμŠ€ν…œμ„ λ³΄λ©΄μ„œ ν•˜λ„λ‘ ν•˜κ² λ‹€.


좜처: Git vs Github – Demystifying The Differences | Edureka

λ²½λŒμ§‘μ„ 우리의 ν•œ ν”„λ‘œμ νŠΈλΌκ³  μƒκ°ν•˜λ©΄ λ˜λŠ”λ°, λ²„μ „κ΄€λ¦¬μ‹œμŠ€ν…œμ΄ 적용된 ν”„λ‘œμ νŠΈ μ•ˆμ˜ νŒŒμΌλ“€μ€ λ³€ν™”κ°€ μ‹œκ°„μ— 따라 κΈ°λ‘λΌμ„œ λ‚΄κ°€ λŒμ•„κ°€κ³  싢은 μ‹œμ μœΌλ‘œ ν”„λ‘œμ νŠΈ νŒŒμΌλ“€μ„ λ˜λŒλ €λ†“μ„ 수 μžˆλ‹€. λ§κ·ΈλŒ€λ‘œ, λ™μΌν•œ νŒŒμΌμ— λŒ€ν•΄ μ—¬λŸ¬ "버전"을 κ΄€λ¦¬ν•΄μ£ΌλŠ” μ‹œμŠ€ν…œμΈ 것이닀.

λ²„μ „κ΄€λ¦¬μ‹œμŠ€ν…œμ„ μ“°λŠ” μš°λ¦¬λŠ” 이런 짓을 μ•ˆν•΄λ„ λ˜λŠ” κ±°λ‹€! 근데 λ””μžμ΄λ„ˆλŠ” 정말 λ‹€ μ΄λŸ°κ°€μš”??

μ €λŠ” λ””μžμ΄λ„ˆλ‹˜λ“€μ„ μ‘΄κ²½ν•©λ‹ˆλ‹€.

Git

깃은 λ°”λ‘œ 이런 λ²„μ „κ΄€λ¦¬μ‹œμŠ€ν…œ 쀑 ν•˜λ‚˜μΈ 것이닀. 깃을 μ΄μš©ν•˜λ©΄ μš°λ¦¬λŠ”

  1. λ‹€λ₯Έ μ‚¬λžŒλ“€κ³Ό λ™μ‹œμ— 같은 ν”„λ‘œμ νŠΈ/νŒŒμΌμ„ μž‘μ—…ν•  수 μžˆλ‹€.
  2. μ–Έμ œ, λˆ„κ°€ μ–΄λ–»κ²Œ λ°”κΏ¨λŠ”μ§€ 기둝을 남겨놓을 수 μžˆλ‹€.
  3. μ›ν•˜λŠ” μ‹œμ μœΌλ‘œ λ˜λŒμ•„ 갈 수 μžˆλ‹€.
  4. ν•˜λ‚˜μ˜ μž‘μ—…μ„ ν•  λ•Œλ§ˆλ‹€ 이 μž‘μ—…μ˜ 정당성을 증λͺ…ν•  수 μžˆλ‹€.

2. Git? Github?

이 λ•Œ, 깃을 처음 μ ‘ν•œ μ‚¬λžŒμ€ κΉƒκ³Ό κΉƒν—ˆλΈŒλ₯Ό μ •ν™•νžˆ κ΅¬λΆ„ν•˜μ§€ λͺ»ν•˜κΈ°λ„ ν•˜λŠ”λ°

Git 은 둜컬 μ €μž₯μ†Œμ—μ„œ νŒŒμΌλ“€μ˜ 버전을 μ‹€μ§ˆμ μœΌλ‘œ κ΄€λ¦¬ν•΄μ£ΌλŠ” μ†Œν”„νŠΈμ›¨μ–΄μ΄κ³ ,

Github λŠ” μ—¬λŸ¬ 둜컬 μ €μž₯μ†Œμ—μ„œ κ³΅μœ ν•  수 μžˆλ„λ‘ 원격 μ €μž₯μ†Œλ₯Ό μ œκ³΅ν•˜λŠ” ν΄λΌμš°λ“œ 같은 것이닀. λΉ„μŠ·ν•œ κ²ƒμœΌλ‘œλŠ” Bitbucket, GitLab 등이 μžˆλ‹€.

κ·Έλž˜μ„œ λ‹€λ₯Έ μ‚¬λžŒλ“€κ³Ό ν˜‘μ—…μ„ ν•˜κ±°λ‚˜ μ˜€ν”ˆ μ†ŒμŠ€λ₯Ό κ³΅μœ ν•˜κ³  λ‹€λ₯Έ μ‚¬λžŒλ“€μ˜ μ˜κ²¬μ„ λ“£κ³  싢은 경우 등은 Github을 μ¨μ„œ νŽΈλ¦¬ν•˜κ²Œ κΈ°λŠ₯을 μ‚¬μš©ν•  수 μžˆλ‹€. λ§Œμ•½ 혼자 μž‘μ—…ν•˜κ±°λ‚˜ 폐쇄적인 λ²”μœ„ λ‚΄μ—μ„œμ˜ ν˜‘μ—…μ΄λΌλ©΄ Git만 μ‚¬μš©ν•΄λ„ λ¬΄λ°©ν•˜λ‹€λŠ” λœ»μ΄λ‹€.

3. git command - init, add, commit

일단 기본적으둜 자주 μ“°λŠ” μ»€λ§¨λ“œλ“€μ€ ν„°λ―Έλ„μ—μ„œ λ°”λ‘œ μ‚¬μš©ν•˜λŠ” κ²½μš°κ°€ λ§Žλ‹€. κ·Έλž˜μ„œ λ‚˜λŠ” Git bashλ₯Ό μ΄μš©ν•΄μ„œ μ»€λ§¨λ“œλ₯Ό μ‹€ν–‰ν•΄λ³΄μ•˜λ‹€.

init

init λͺ…λ Ήμ–΄λŠ” 버전관리λ₯Ό μ›ν•˜λŠ” 디렉토리λ₯Ό μ„ νƒν•˜κ³  initialize ν•œλ‹€. init λͺ…λ Ήμ–΄λ₯Ό μ‹€ν–‰ν•˜λ©΄, μ›λž˜λŠ” μ—†λ˜ 디렉토리인 .git이 μƒκ²¨λ‚œλ‹€. .git은 이름 μ•žμ— 점이 λΆ™μ–΄μžˆλŠ” μˆ¨κΉ€ νŒŒμΌμ΄λ―€λ‘œ -a μ˜΅μ…˜μ„ λΆ™μ—¬ μ£Όμ–΄μ•Ό 디렉토리 λ¦¬μŠ€νŠΈμ—μ„œ 확인할 수 μžˆλ‹€.

λ‚˜λŠ” GITμ΄λΌλŠ” μƒˆλ‘œμš΄ 디렉토리λ₯Ό λ§Œλ“€μ–΄ ν•΄λ‹Ή μœ„μΉ˜μ—μ„œ git init λͺ…λ Ήμ–΄λ₯Ό μ£Όμ—ˆλ‹€. κ·Έλž¬λ”λ‹ˆ μ•„λž˜ 사진과 같이 .git 디렉토리가 μƒκ²ΌμŒμ„ 확인할 수 μžˆμ—ˆλ‹€.

.git λ””λ ‰ν† λ¦¬λŠ” 우리의 버전 관리 λŒ€μƒμΈ 우리의 ν”„λ‘œμ νŠΈμ— ν•„μš”ν•œ 정보듀이 λͺ¨λ‘ λ‹΄κ²¨μžˆλŠ” 곳이닀. 이λ₯Όν…Œλ©΄ 각각의 컀밋듀에 λŒ€ν•œ 정보, 컀밋 νžˆμŠ€ν† λ¦¬, 원격저μž₯μ†Œμ˜ μ£Όμ†Œ 등이 μžˆμ„ 것이닀.

add

자 이제 GIT 디렉토리 내에 μƒˆλ‘œμš΄ 파일 Aλ₯Ό λ§Œλ“€μ–΄λ³΄μž. λ‚˜λŠ” vim으둜 κ°„λ‹¨ν•œ 인사말을 μ μ–΄μ£Όμ—ˆλ‹€.

그리고 λ‚˜μ„œ 이 파일의 버전을 κ΄€λ¦¬ν•˜κΈ° μœ„ν•΄ 파일의 λ³€κ²½ μƒνƒœ, 즉 Aκ°€ μƒκ²¨λ‚œ μƒνƒœλ₯Ό addν–ˆλ‹€. 별닀λ₯Έ 좜λ ₯은 μ—†μ—ˆλ‹€.

commit

git의 버전관리λ₯Ό ν•˜λŠ” λ‹¨μœ„!! 컀밋을 λ§Œλ“œλŠ” λͺ…령어이닀. 컀밋을 μƒμ„±ν•˜λ©΄ ν•΄λ‹Ή μ‹œμ μ˜ 파일 μƒνƒœλ‘œ λŒμ•„κ°ˆ 수 있게 λœλ‹€. νƒ€μž„λ¨Έμ‹ μ˜ μ§€ν‘œκ°€ λ˜λŠ” κ²ƒμ΄λ‹€πŸ˜Š

commit 을 ν•  λ•ŒλŠ” λ©”μ‹œμ§€λ₯Ό 같이 λ‹¬μ•„μ•Όν•œλ‹€.

그러면 μœ„μ™€κ°™μ΄ μ•Œ 수 μ—†λŠ” 좜λ ₯듀이 λ‚˜μ˜¨λ‹€. 밑에 κ·ΈλŒ€λ‘œ μ¨λ΄€λŠ”λ°,

[master (root-commit) 238b896] Create A
 1 file changed, 1 insertion(+)
 create mode 100644 A

여기에 238b896μ΄λΌλŠ” μˆ«μžλŠ” 컀밋듀을 κ΅¬λΆ„ν•˜λŠ” κ³ μœ ν•œ 40자 슀트링의 μ•žλΆ€λΆ„μ΄λ‹€. 이 슀트링이 각 컀밋을 생성할 λ•Œ SHA ν•΄μ‹œ μ•Œκ³ λ¦¬μ¦˜μ„ μ΄μš©ν•΄ λ§Œλ“€μ–΄μ§€κΈ° λ•Œλ¬Έμ— Git SHA라고 λΆ€λ₯Έλ‹€.

git logλ₯Ό μ‹€ν–‰ν•˜λ©΄ μ΄λŸ°μ‹μœΌλ‘œ μ»€λ°‹μ˜ 정보λ₯Ό 더 μžμ„Ένžˆ λ³Ό 수 μžˆλ‹€.


4. GUI? λ‚˜μ—κ²Œ λ§žλŠ” νˆ΄μ„ μ°Ύμ•„λ³΄μž

Command Line Interface (CLI)λŠ” 터미널, bash, μ»€λ§¨λ“œμ°½ λ“± text-based user Intercace 이닀. git λͺ…λ Ήμ–΄λ₯Ό λ°”λ‘œ λ°”λ‘œ μ‹€ν–‰ν•  수 μžˆμ–΄ νŽΈλ¦¬ν•˜λ‹€. ν•˜μ§€λ§Œ CLIλ₯Ό μ΄ˆλ³΄μžκ°€ μ‚¬μš©ν•˜λ©΄ ν—·κ°ˆλ¦¬κ³  μ‹€μˆ˜λ₯Ό 많이 ν•  수 있기 λ•Œλ¬Έμ— μ„ μƒλ‹˜κ»˜μ„œλŠ” GUIλ₯Ό 적극 μΆ”μ²œν•΄μ£Όμ…¨λ‹€.

git을 더 직관적이고, νŽΈλ¦¬ν•˜κ²Œ μ“Έ 수 있게 λ„μ™€μ£ΌλŠ” GUIμ—λŠ” μ—¬λŸ¬ μ’…λ₯˜κ°€ μžˆλŠ”λ°, λŒ€ν‘œμ μœΌλ‘œ GitKraken, SourceTree, GitHub Desktop 등이 μžˆλ‹€. 그리고 μ—¬λŸ¬ IDEμ—μ„œλ„ μž‘μ—…μ„ ν•˜λ©΄μ„œ git을 νŽΈλ¦¬ν•˜κ²Œ μ“Έ 수 μžˆλŠ” ν”ŒλŸ¬κ·ΈμΈλ“€μ„ μ œκ³΅ν•˜κ³  μžˆκΈ°λ„ ν•˜λ‹€.

λ‚˜λŠ” μΆ”μ²œμ„ 따라 GitKraken을 μ„€μΉ˜ν–ˆλ‹€. μ˜€μ§•μ–΄κ°€ μ°Έ κ·€μ—½λ‹€.

κΉƒν„°λ”” μžλ£Œμ— μžˆλŠ” 밑에 사진을 보고 μ΄λ ‡κ²Œ 비ꡐ해쀀 μžλ£Œλ„ μžˆκ΅¬λ‚˜ ν•˜κ³  μ§„μ§€ν•˜κ²Œ 보닀가 ν”Όμ‹ν–ˆλ‹€. κ·€μ—¬μš΄ μ˜€μ§•μ–΄λ‹ˆκΉŒ 봐쀀닀.πŸ˜…


5. 우리의 νŒŒμΌμ€ μ–΄λ–€ μƒνƒœμΌκΉŒ?

μœ„ μ‚¬μ§„μ—μ„œ λ¨Όμ € μœ— λΆ€λΆ„λ§Œ 이해해보도둝 ν•˜μž.

μš°μ„  μ € ν™”μ‚΄ν‘œλ₯Ό 따라 μ›€μ§μ΄λŠ” 녀석듀은 '파일의 λ³€ν™”'라고 μƒκ°ν•˜λ©΄ λœλ‹€. 그리고 원기λ‘₯듀은 각 '파일 λ³€ν™”'κ°€ μžˆλŠ” μ˜μ—­μ„ κ΅¬λΆ„ν•˜κΈ° μœ„ν•΄ 그렀넣은 것이닀.

Workspace

μš°μ„  workspace(= worktree)λŠ” μ‹€μ œ 우리 μ»΄ν“¨ν„°μ˜ 파일 μ‹œμŠ€ν…œμ˜ 디렉토리λ₯Ό μ΄μ•ΌκΈ°ν•œλ‹€. κ·Έλž˜μ„œ μš°λ¦¬κ°€ νŒŒμΌμ„ μˆ˜μ •ν•˜κ³  μ•„λ¬΄λŸ° λͺ…령을 ν•˜μ§€ μ•Šμ•˜μ„ 경우 파일의 변경사항은 λ²„μ „κ΄€λ¦¬μ‹œμŠ€ν…œμ΄ μΈμ‹ν•˜κΈ° μ „, workspace μˆ˜μ€€μ— μžˆλŠ” 것이닀.

Index

이 λ•Œ, git add ν•΄λ‹ΉνŒŒμΌ λͺ…령을 μ‹€ν–‰ν•˜λ©΄ ν•΄λ‹Ή 파일의 λ³€ν™”λ₯Ό λ²„μ „κ΄€λ¦¬μ‹œμŠ€ν…œμ΄ 감지해 Index μ˜μ—­μ— μΆ”κ°€λ˜λŠ” 것이닀. IndexλŠ” μ§€κΈˆκΉŒμ§€ 발견된, μ•žμœΌλ‘œ commit ν•  '파일 변경사항'듀을 기둝(stage/track)ν•΄λ†“λŠ” κ°€μƒμ˜ 곡간이닀. μ €μž₯μ†Œμ— λ³€κ²½ 사항을 κΈ°λ‘ν•˜κΈ° μœ„ν•΄μ„œλŠ” κΈ°λ‘ν•˜κ³ μž ν•˜λŠ” λͺ¨λ“  λ³€κ²½ 사항듀이 'Index'에 μ‘΄μž¬ν•΄μ•Όν•œλ‹€.

예λ₯Ό λ“€μ–΄ 10개의 νŒŒμΌμ„ μˆ˜μ •ν–ˆμ§€λ§Œ κ·Έ 쀑에 7개만 μ €μž₯μ†Œμ— κ³΅κ°œν•˜κ³  싢을 λ•Œλ₯Ό 생각해보면, λ³€κ²½ν•œ 10개의 파일 쀑 7개λ₯Ό μ„ νƒν•˜λŠ” μž‘μ—…μ΄ λ°”λ‘œ μΈλ±μŠ€μ— 등둝/μŠ€ν…Œμ΄μ§• ν•˜λŠ” 것이닀.

local repository

Index에 μ €μž₯된 파일 변경사항듀을 λ²„μ „κ΄€λ¦¬μ‹œμŠ€ν…œμ„ 톡해 κ΄€λ¦¬ν•˜κΈ° μœ„ν•΄μ„œλŠ” 파일 변경사항듀을 λ‹€λ₯Έ 정보듀과 ν•¨κ»˜ commit λ‹¨μœ„λ‘œ 기둝해주어야 ν•œλ‹€. local repositoryλŠ” μ΄λŸ¬ν•œ commit듀이 μ €μž₯된 곡간이닀.


6. HEAD? where am I

μ§€κΈˆ μž‘μ—… 쀑인 λΈŒλžœμΉ˜κ°€ 무엇인지 Git은 μ–΄λ–»κ²Œ νŒŒμ•…ν• κΉŒ. λ‹€λ₯Έ 버전 관리 μ‹œμŠ€ν…œκ³ΌλŠ” 달리 Git은 'HEADβ€™λΌλŠ” νŠΉμˆ˜ν•œ 포인터가 μžˆλ‹€. 이 ν¬μΈν„°λŠ” μ§€κΈˆ μž‘μ—…ν•˜λŠ” 둜컬 브랜치λ₯Ό 가리킨닀.

ν˜„μž¬ μž‘μ—… 쀑인 브랜치λ₯Ό κ°€λ¦¬ν‚€λŠ” HEAD

git log --oneline --decorate 을 ν•˜λ©΄ λΈŒλžœμΉ˜κ°€ μ–΄λ–€ 컀멧을 κ°€λ¦¬ν‚€λŠ”μ§€ 확인할 수 μžˆλ‹€.

HEAD μ΄μ•ΌκΈ°λŠ” 브랜치 λ‚΄μš©μ„ μ“°κ³  λ‚˜μ„œ 더 μžμ„Ένžˆ μ“°λ €ν•œλ‹€πŸ˜‰


7. reset

κΉƒμ—μ„œλŠ” 둜컬 μ €μž₯μ†Œμ— μ €μž₯된 컀밋듀을 μ§€μš°λŠ”, 리셋을 ν•  수 μžˆλ‹€λŠ” μ•„μ£Όμ•„μ£Ό νŽΈλ¦¬ν•œ κΈ°λŠ₯이 μžˆλ‹€.

λ°”λ‘œ git reset λͺ…령어인데, 이 λͺ…λ Ήμ–΄λŠ” git reset [컀밋포인터/SHA] 의 ν˜•μ‹μœΌλ‘œ μ‚¬μš©ν•œλ‹€. reset λͺ…λ Ήμ—λŠ” μ˜΅μ…˜μ΄ μžˆλŠ”λ° 이게 μ€‘μš”ν•œ 것 κ°™λ‹€.

  1. --soft : μ»€λ°‹λ§Œ μ§€μš°κ³  Working tree와 Indexμ—λŠ” 기둝을 남김
  2. --mixed (default) : working treeμ—λ§Œ 기둝을 남김 (Unstaging)
  3. --hard : Working treeμ—μ„œλ„ λ‹€ μ§€μ›Œλ²„λ¦Ό πŸ‘‰πŸ» 파일 μƒνƒœκ°€ 리셋됨.

μ„ μƒλ‹˜μ€ --hard μ˜΅μ…˜μ΄ 자주 쓰인닀고 ν–ˆλ‹€. λ‚˜κ°™μ•„λ„ κ°œλ°œν•˜λ©΄μ„œ ν•˜λ“œλ₯Ό 많이 μ“Έ 것 κ°™λ‹€.


8. revert

git revertλŠ” resetκ³Ό λΉ„μŠ·ν•˜μ§€λ§Œ λ‹€λ₯΄κ²Œ λ™μž‘ν•˜λŠ” λͺ…령어이닀. resetκ³Ό λ§ˆμ°¬κ°€μ§€λ‘œ μ»€λ°‹ν•œ 변경사항을 μ‚­μ œν•˜λŠ” 것은 κ°™μ§€λ§Œ revertλŠ” 변경사항을 μ‚­μ œν•˜λŠ” 컀밋을 μƒˆλ‘œ λ§Œλ“ λ‹€!

reset λͺ…령은 이미 컀밋이 원격에 μ˜¬λΌκ°”μ„ λ•Œμ²˜λŸΌ 컀밋을 λ‘œμ»¬μ—μ„œλ§Œ μ‚­μ œν•΄μ„œ ν•΄κ²°λ˜μ§€ μ•ŠλŠ” 경우 μ‚¬μš©ν•˜κΈ° μ• λ§€ν•˜λ‹€. κ·Έλž˜μ„œ 컀밋 νžˆμŠ€ν† λ¦¬κ°€ 꼬이지 μ•Šκ²Œ ν•˜κ³  싢을 λ•Œ revertλ₯Ό μ‚¬μš©ν•˜λŠ” 것도 ν•˜λ‚˜μ˜ 방법이라고 ν•œλ‹€.

λ°‘μ˜ 그림을 보면 이해가 쉽닀.


이미지 좜처: Version control with Git


λ„ˆλ¬΄ μ‘Έλ €μ„œ λ’€μ˜ λͺ…령어듀은 μ‹€μŠ΅μ„ 직접 ν•΄λ³΄μ§€λŠ” λͺ»ν–ˆλ‹€ ν•˜μ§€λ§Œ μ œλŒ€λ‘œ μ΄ν•΄ν–ˆμœΌλ‹ˆ 담에 ν•œ 번 해보면 금방 손에도 읡을 것같닀!! 그리고 손에 읡지 μ•Šμ•„λ„ 이제 λ‚˜ν•œν… μ˜€μ§•μ–΄κ°€ μžˆμœΌλ‹ˆ 걱정이 μ—†λ‹Ή 😘 κΉƒ λ„ˆ μ£½μ—ˆμ–΄!

0개의 λŒ“κΈ€