๐ŸŒŸ 220709.TIL

Universeยท2022๋…„ 7์›” 9์ผ
0

study

๋ชฉ๋ก ๋ณด๊ธฐ
13/49

Git ?

๋ฒ„์ „ ๊ด€๋ฆฌ ์†Œํ”„ํŠธ์›จ์–ด
๊ฐ€์žฅ ๋Œ€์ค‘์ ์œผ๋กœ ์“ฐ์ธ๋‹ค

  • ๊ณผ๊ฑฐ ์ž‘์—…์œผ๋กœ ํšŒ๊ท€ ๊ฐ€๋Šฅ
  • ๊ณผ๊ฑฐ ์ž‘์—…๋‚ด์šฉ ์—ด๋žŒ ๊ฐ€๋Šฅ

์ฒ˜์Œ ํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ

// ์ž‘์—… ํŒŒ์ผ์„ ํ„ฐ๋ฏธ๋„๋กœ ์—ด๊ณ 
git config --global user.email "???@???.com"
git config --global user.name "username"

// ์ž‘์—… ํด๋”๋ฅผ vscode๋กœ ์—ด๊ณ 
git init

git init ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๋ฉด git์ด ์ž‘์—… ํด๋”๋ฅผ ์ฃผ์‹œํ•œ๋‹ค

Add & commit

git add ํŒŒ์ผ๋ช….ํ™•์žฅ์ž
git commit -m '์ฝ”๋ฉ˜ํŠธ'

add ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ด staging area ๋กœ ํŒŒ์ผ์„ ์ €์žฅํ•ด๋†“๋Š” ๊ณผ์ •์„ ์Šคํ…Œ์ด์ง•,

์Šคํ…Œ์ด์ง• ๋œ ํŒŒ์ผ์„ repository๋กœ ์ด๋™ ์‹œํ‚ค๋Š”๊ฒƒ (commit)์„ ๋ฒ„์ „ ์ƒ์„ฑํ•œ๋‹ค ๋ผ๊ณ  ํ•œ๋‹ค

๊ตณ์ด add ์™€ commit ์„ ๋‚˜๋ˆ„๋Š” ์ด์œ ๋Š”

๋ชจ๋“  ํŒŒ์ผ์„ ๋‹ค ์ €์žฅํ•˜์ง€ ์•Š์•„๋„ ๋˜๊ธฐ ๋•Œ๋ฌธ

์˜ˆ๋ฅผ ๋“ค์–ด ์ด๋ฏธ์ง€ ํŒŒ์ผ์€ ์–ด์ง€๊ฐ„ํ•˜๋ฉด ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๊ธฐ๋•Œ๋ฌธ์— ๋งค๋ฒˆ ์ €์žฅํ•ด ์ค„ ํ•„์š”๊ฐ€ ์—†๋‹ค

์ฃผ๋กœ ์“ฐ์ด๋Š” ๋ช…๋ น์–ด

git add . // ๋ชจ๋“  ํŒŒ์ผ ์Šคํ…Œ์ด์ง•
git status // ์–ด๋–ค ํŒŒ์ผ์„ ์Šคํ…Œ์ด์ง• ํ•ด ๋†“์•˜๋Š”์ง€, ์ˆ˜์ •์ด ๋˜์—ˆ๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์Œ
git log --all --oneline // ์ง€๊ธˆ๊นŒ์ง€ ์ปค๋ฐ‹ ํ•œ ๋‚ด์šฉ ํ™•์ธ

git diff

git diff // ์ตœ๊ทผ ๋ณ€๊ฒฝ์‚ฌํ•ญ ์•Œ๋ ค์คŒ
git difftool // vim ์„ ์ด์šฉํ•œ ๋ณ€๊ฒฝ์‚ฌํ•ญ ์•Œ๋ ค์คŒ
git difftool '์ปค๋ฐ‹id' '์ปค๋ฐ‹id' // ์ปค๋ฐ‹id๋ฅผ ์ž…๋ ฅํ•ด์„œ ํŠน์ • ๋ฒ„์ „๋ผ๋ฆฌ์˜ ์ฐจ์ด์ ์„ ์•Œ๋ ค์คŒ

๊ทผ๋ฐ ์š”์ฆ˜์—” ์ด๋Ÿฐ๊ฑฐ ์•ˆ์”€

git graph ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ›จ์”ฌ ๋” ๊น”๋”ํ•˜๊ฒŒ ๋ณผ ์ˆ˜ ์žˆ๋‹ค

์ด๋Ÿฐ์‹์œผ๋กœ

๋ณต์‚ฌ๋ณธ ๋งŒ๋“ค๊ธฐ - branch ๊ธฐ๋Šฅ

commit์˜ ๋ณต์‚ฌ๋ณธ ๋งŒ๋“ค๊ธฐ

git branch '์ด๋ฆ„'
// '์ด๋ฆ„' ์ด๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ์ตœ๊ทผ ์ปค๋ฐ‹์˜ ์‚ฌ๋ณธ์„ ๋งŒ๋“ฌ
git switch '์ด๋ฆ„'
// '์ด๋ฆ„' ์ด๋ผ๋Š” branch๋กœ ์ด๋™

gitgraph๋กœ ๋ณธ branch

secondbranch ์—์„œ ์ž‘์—…์„ ํ•˜๋‹ค๊ฐ€

master ๋กœ ๋ณ€๊ฒฝํ•˜๋ฉด?

๋ธŒ๋žœ์น˜๋ฅผ ๋ณต์ œํ–ˆ๋˜ ๋ถ„๊ธฐ๋กœ ๋˜๋Œ์•„ ๊ฐ„๋‹ค

master ๋ธŒ๋žœ์น˜์™€ ํ•ฉ์น˜๊ณ  ์‹ถ๋‹ค๋ฉด

master ๋ธŒ๋žœ์น˜๋กœ ์ด๋™ ํ•œ ํ›„

git merge '๋Œ€์ƒ ๋ธŒ๋žœ์น˜'
// ์ด๋ ‡๊ฒŒ ์ž…๋ ฅํ•˜๋ฉด ๋Œ€์ƒ๋ธŒ๋žœ์น˜๊ฐ€ master ๋ธŒ๋žœ์น˜์™€ ๋ณ‘ํ•ฉ(merge)๋œ๋‹ค !

gitgraph ๋กœ ๋ณธ merge

์˜ˆ์˜๋‹ค!

๊ถ๊ธˆํ•œ ๊ฒŒ ๊ฐ‘์ž๊ธฐ ์ƒ๊ฒผ๋‹ค

๊ทธ๋ ‡๋‹ค๋ฉด

๋ธŒ๋žœ์น˜์˜ ๋ธŒ๋žœ์น˜์˜ ๋ธŒ๋žœ์น˜์˜โ€ฆโ€ฆ

์ด๋Ÿฐ์‹์œผ๋กœ๋„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์„๊นŒ ?

๋  ๊ฒƒ ๊ฐ™์•„์„œ ๋ฐ”๋กœ ํ•ด๋ดค๋‹ค

๋„ˆ๋ฌด ์˜ˆ์˜๋‹ค !

๊ทธ๋Ÿฐ๋ฐโ€ฆ

๋ณ‘ํ•ฉํ• ๋•Œ ๋˜‘๊ฐ™์€ ํŒŒ์ผ์„ ์ˆ˜์ •ํ•ด ๋ณ‘ํ•ฉํ•˜๊ฒŒ ๋˜๋ฉด conflict error ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค

์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์ด์œ ?

๊ฐœ๋ฐœํ•˜๋Š” ๊ณผ์ •์—์„œ, ํ•˜๋‚˜์˜ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ ์š”๊ตฌ์‚ฌํ•ญ์„
๋ฐ˜์˜ํ•˜๊ธฐ ์œ„ํ•ด ํŠน์ • ํŒŒ์ผ์„ ๋ณ€๊ฒฝํ•˜๊ฒŒ ๋˜๊ณ  ์ด๋Š” ํ•ด๋‹น ํŒŒ์ผ๊ณผ ์ •๋ณด๋ฅผ
์ฃผ๊ณ ๋ฐ›๋Š” ๋‹ค๋ฅธ ํŒŒ์ผ๋กœ ์ „ํŒŒ๋˜์–ด ์ถ”๊ฐ€์ ์ธ ๋ณ€๊ฒฝ ์ž‘์—…์„ ์š”ํ•˜๊ฒŒ ๋œ๋‹ค. ์ด ๋•Œ,
์—ฌ๋Ÿฌ ๊ฐœ๋ฐœ์ž๋“ค์ด ์„œ๋กœ ํ˜‘์˜ํ•˜์ง€ ์•Š์€ ์ฑ„ ๋‹ค๋ฅธ ๊ธฐ๋Šฅ์„ ๋™์‹œ ๋ณ‘๋ ฌ์ ์œผ๋กœ
๋ณ€๊ฒฝํ•˜๋‹ค๊ฐ€ ๋™์ผํ•œ ํŒŒ์ผ์„ ๋ณ€๊ฒฝํ•  ๊ฒฝ์šฐ ๋ณ‘ํ•ฉ ์ถฉ๋Œ(merge conflict)์ด ๋ฐœ์ƒํ• 
์ˆ˜ ์žˆ๋‹ค(Berzins and Dampier, 1996). ์ด๋ ‡๊ฒŒ ํŒŒ์ผ ๊ฐ„ ์ •๋ณด ๊ตํ™˜์œผ๋กœ ์ธํ•ด
์ข…์†์„ฑ์ด ์กด์žฌํ•˜๋Š” ์‹œ์Šคํ…œ์„ ๋™์‹œ ๋ณ‘๋ ฌ์ ์œผ๋กœ ๊ฐœ๋ฐœํ•˜๋‹ค๊ฐ€ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜๋Š”
์ƒํ™ฉ์„ ๊ทธ๋ฆผ 1.3๊ณผ ๊ฐ™์ด ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ณ‘ํ•ฉ ์ถฉ๋Œ์˜ ์œ ํ˜•์—๋Š” ๊ตฌ๋ฌธ ์ถฉ๋Œ,
์˜๋ฏธ ์ถฉ๋Œ, ๊ตฌ์กฐ ์ถฉ๋Œ ๋“ฑ์ด ์žˆ์œผ๋ฉฐ ์ด๋กœ ์ธํ•ด ํŒŒ์ผ ๋‚ด์—์„œ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ• 
์ˆ˜ ์žˆ๋‹ค(Mens, 2002). ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•๋ก ์— ๋Œ€ํ•œ ์—ฐ๊ตฌ๋กœ๋Š” ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•œ
์ดํ›„ ์ˆ˜์ •๋œ ๋‚ด์—ญ์„ ์ถ”๊ฐ€๋กœ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ์ œ๊ฑฐํ•จ์œผ๋กœ์จ ํ•ด๊ฒฐํ•˜๋Š”
์ „๋žต(Munson and Dewan, 1994; Edwards, 1997), ์ถฉ๋Œ์„ ๋ฐœ์ƒ์‹œํ‚จ ๋‘ ๊ฐœ๋ฐœ์ž๊ฐ€
๊ฐ์ž์˜ ๋ฒ„์ „์„ ํ†ตํ•ฉํ•˜๊ธฐ ์œ„ํ•ด ํ˜‘๋ ฅํ•˜๋Š” ๋ฐฉ๋ฒ•๋ก (Brosch et al., 2009) ๋“ฑ ๋ณ‘ํ•ฉ
์ถฉ๋Œ์— ๋Œ€ํ•œ ์—ฐ๊ตฌ๊ฐ€ ํ™œ๋ฐœํžˆ ์ด๋ฃจ์–ด์ ธ ์™”๋‹ค.

(์ถœ์ฒ˜) : Identifying Potentially Conflicting Files by Predicting Change Probability using Software Change Log Data( ์†Œํ”„ํŠธ์›จ์–ด์˜ ํŒŒ์ผ ๋ณ€๊ฒฝ ํ™•๋ฅ  ์˜ˆ์ธก์„ ํ†ตํ•œ ์ถฉ๋Œ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š” ํŒŒ์ผ์˜ ์‹๋ณ„ - ์ด์ฃผ์šฉ)

๋…ผ๋ฌธ์„ ๋‹ค ์ฝ์–ด๋ณด๊ธฐ์—” ์–‡์€ ์ง€์‹์œผ๋กœ ๋„ˆ๋ฌด ์–ด๋ ค์› ๊ณ 

๋‚ด๊ฐ€ ์–ป๊ณ ์ž ํ–ˆ๋˜ ์š”์ ์€ ๊ฐœ๋ฐœ์ž๋“ค์€ ๊ฐœ๋ฐœํ˜‘์—… ๊ณผ์ •์—์„œ ๊ฐ™์ด ๋™์‹œ๋‹ค๋ฐœ์ ์œผ๋กœ ๊ฐœ๋ฐœํ•˜๋Š”๋ฐ

์˜ˆ๋ฅผ๋“ค์–ด ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ๊ทธ๋žจ์˜ ๊ฒฝ์šฐ ์„œ๋กœ ํ˜‘์˜ํ•˜์ง€ ์•Š๊ณ  ๋‹ค๋ฅธ ๊ธฐ๋Šฅ์„ ๋™์‹œ์— ๋ณ‘๋ ฅ์ ์œผ๋กœ ๊ฐœ๋ฐœํ•˜๋‹ค๊ฐ€

๊ฐ„ํ˜น ๋™์ผํ•œ ํŒŒ์ผ์„ ๋ณ€๊ฒฝํ•˜๋ฉด ์ถฉ๋Œ์ด ์ผ์–ด๋‚œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค

์–ด์„คํ”„๊ฒŒ ๋Œ€์ถฉ ๊ตฌํ˜„ํ•ด๋ณธ conflict error

ํ„ฐ๋ฏธ๋„ ์ƒํ™ฉ์€ ์ด๋ ‡๋‹ค

์œ—์ชฝ์ด master branch

์•„๋žซ์ชฝ์ด conflictTest branch ์ธ๋ฐ

๋ณ‘ํ•ฉํ•˜๋ ค๊ณ  ํ•˜๋‹ˆ๊นŒ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœํ–‰ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค

vscode ๋Š” ๊ณ ๋ง™๊ฒŒ๋„ 4๊ฐ€์ง€ ์˜ต์…˜์œผ๋กœ conflict error ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๊ฒŒ ์˜ต์…˜์„ ๋งŒ๋“ค์–ด ๋†“์•˜๋‹ค

Accept Current Change

- HEAD, ๊ธฐ์กด(master) ๋ธŒ๋žœ์น˜๋ฅผ ์ ์šฉ

Accept Incoming Change

- ๋ณ€๊ฒฝ๋œ ๋ถ€๋ถ„์„ ์ ์šฉ. ๋ณ‘ํ•ฉ ๋Œ€์ƒ์ด ๋œ ๋ธŒ๋žœ์น˜์˜ ๋‚ด์šฉ์„ ์ ์šฉ

Accept Both Change

- ๋‘˜ ๋‹ค ์ ์šฉ
- ๋ฐฉ์‹์ด ์กฐ๊ธˆ ํŠน์ดํ•œ๋ฐ ๋ณ€๊ฒฝ๋œ ๋ถ€๋ถ„ ๋‘˜ ๋‹ค๋ฅผ ํ•œ๊บผ๋ฒˆ์— ์ ์šฉํ•œ๋‹ค

Compare Change

- error ๋ถ€๋ถ„์„ ๋น„๊ต๋ถ„์„ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ณด์—ฌ์คŒ

fast-forward merge

์ง€๊ธˆ๊นŒ์ง€ ๋ฐฐ์› ๋˜ ๋ฐฉ์‹์€ 3-way merge ๋ผ๊ณ  ํ•˜๋Š”๋ฐ

๋งŒ์•ฝ HEAD ๋ธŒ๋žœ์น˜์— ์ˆ˜์ •์‚ฌํ•ญ์ด ์—†๊ณ 

์ž‘์—…ํ•œ ๋ธŒ๋žœ์น˜๋ฅผ HEAD ๋ธŒ๋žœ์น˜์™€ ๋ณ‘ํ•ฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด

์ถœ์ฒ˜ : https://backlog.com/git-tutorial/kr/stepup/stepup1_4.html

์ด๋Ÿฐ์‹์œผ๋กœ ์ž‘์—…ํ•œ ๋ธŒ๋žœ์น˜(bugfix)๋ฅผ HEAD ๋ธŒ๋žœ์น˜(master)๋กœ ๋ฐ”๊ฟ”์คŒ์œผ๋กœ์จ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋ณ‘ํ•ฉํ•  ์ˆ˜ ์žˆ๋‹ค

gitgraph ๋กœ fast-forward merge ๋ฅผ ํ•˜๋ ค๊ณ  ํ•˜๋ฉด ์ด๋Ÿฐ ์ฐฝ์ด ๋œจ๋Š”๋ฐ

Create a new commit even if fast-forward is possible

(fast-forward ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋”๋ผ๋„ ์ƒˆ ์ปค๋ฐ‹์„ ๋งŒ๋“ค๊นŒ์š”?)

์˜ต์…˜์„ ์ฒดํฌํ•ด์ œ ํ•˜๋ฉด

์ฒดํฌํ–ˆ์„๋•Œ์™€ ์ฒดํฌํ•˜์ง€ ์•Š์•˜์„๋•Œ์˜ ์ฐจ์ด

git rebase

๊ฐ•์ œ๋กœ fast-forward merge ๋ฅผ ํ•˜๊ณ ์‹ถ์„ ๋•Œ ์“ด๋‹ค

์œ— ์ƒํ™ฉ์ฒ˜๋Ÿผ HEAD ๋ธŒ๋žœ์น˜์— ์ˆ˜์ •์‚ฌํ•ญ์ด ์—†๋‹ค๋ฉด ๋ฐ”๋กœ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ

๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋Š”

์‹ ๊ทœ๋ธŒ๋žœ์น˜์˜ ์‹œ์ž‘์ ์„ HEAD ๋ธŒ๋žœ์น˜ ์ตœ๊ทผ ์ปค๋ฐ‹์œผ๋กœ ์˜ฎ๊ธด ๋‹ค์Œ ๋ณ‘ํ•ฉํ•œ๋‹ค

์™œ ์ด๊ฑธ ์“ฐ๋ƒ๋ฉด

์ „๋ถ€ 3-way merge ๋ฅผ ํ•˜๋ฉด ๋ณต์žกํ•˜๊ณ  log ์ถœ๋ ฅ์‹œ ๋ณ‘ํ•ฉ๋œ ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜๋“ค์˜ ์ปค๋ฐ‹๋‚ด์šฉ๋„ ์ถœ๋ ฅ๋˜์„œ

์•Œ์•„๋ณด๊ธฐ ํž˜๋“ค์–ด์„œ ๊ทธ๋ ‡๋‹ค๊ณ  ํ•œ๋‹ค

์ถ”๊ฐ€๋กœ squash and merge ํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ๊ณ 

github ์— ๋‚ด ํŒŒ์ผ์„ ์˜ฌ๋ ค ๋ณด๊ธฐ

  1. ๊นƒ ํ—ˆ๋ธŒ์— ๋ ˆํฌ์ง€ํ† ๋ฆฌ ํ•˜๋‚˜๋ฅผ ์ƒ์„ฑํ•œ๋‹ค

  1. private / public ์„ค์ •ํ•ด์„œ ์ด๋ฆ„๋„ ์˜ˆ์˜๊ฒŒ ์ง“๊ณ 

  1. ์ด๊ฑฐ ํ„ฐ๋ฏธ๋„์— ๋ณต์‚ฌํ•˜๊ณ  ๋ถ™ํ˜€๋„ฃ๊ธฐ ํ•œ๋‹ค

  1. ์ด๋ ‡๊ฒŒ

  1. ์จ”์ŸŒ

์ถ”๊ฐ€๋กœ

๋กœ์ปฌ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ํŒŒ์ผ์„ ๋ฆฌ๋ชจํŠธ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋กœ ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ์„ 'ํ‘ธ์‹œ(Push)'

๋ฆฌ๋ชจํŠธ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ ๋กœ์ปฌ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋กœ ๋‚ด๋ ค๋ฐ›๋Š” ๊ฒƒ์„ 'ํ’€(Pull)'

๋ผ๊ณ  ํ•˜๋Š”๋ฐ

์ด๋Ÿฌํ•œ ๋ช…๋ น์„ ์ด์šฉํ•ด์„œ ๊ฐ€์ ธ์˜ฌ์ˆ˜๋„, ์˜ฌ๋ฆด์ˆ˜๋„ ์žˆ๋‹ค.


vscode ์—๋Š” ์—ฌ๊ธฐ์„œ ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค

์˜ค๋Š˜์ด ๊ฐ€์žฅ ํž˜๋“ค์—ˆ๋‹ค

์˜ค๋ฅ˜๊ฐ€ ์ •๋ง์ •๋ง ๋งŽ์ด ๋‚ฌ๋‹ค

์ •๋ง๋กœ ์ •๋ง๋กœ ๋งŽ์ด๋‚ฌ๋‹ค

์•„๋‹ˆ ์ •๋ง ์ง„์งœ๋กœ ๋งŽ์ด๋‚ฌ๋‹ค

ํ•˜๋‚˜ ํ•ด๊ฒฐํ•˜๋ฉด ํ•˜๋‚˜ ์˜ค๋ฅ˜๋œจ๋Š” ์ˆ˜์ค€

๊ถ๊ธˆํ•ด์„œ ์ด๊ฒƒ์ €๊ฒƒ ๊ฑด๋“œ๋ ค๋ณธ๊ฒŒ ๋ฌธ์ œ๋ผ๋ฉด ๋ฌธ์ œ์ผ ์ˆ˜ ์žˆ๊ฒ ๋‹ค ๐Ÿ˜‡

๋ญ๋งŒ ์ž˜๋ชป ๋ˆ„๋ฅด๋ฉด ์ปค๋ฐ‹์ด ๊ฐ‘์ž๊ธฐ ์•ˆ๋œ๋‹ค

๊ฒฝ๋กœ๊ฐ€ ์ž˜๋ชป๋๋‹ค๊ณ  ํ•˜์ง€๋ฅผ ์•Š๋‚˜, ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†๋‹ค๊ณ  ํ•˜์ง€๋ฅผ ์•Š๋‚˜

์ฒ˜์Œ ์จ๋ณด๋Š” ๊ฑฐ๋ผ๊ณ  ํ•ด๋„ ํ•˜๋‚˜๋งŒ ๋”ฑ ์ž˜๋ชป๊ฑด๋“œ๋ ค๋„ ์˜ค๋ฅ˜๊ฐ€ ๋‚œ๋‹ค๋‹ˆ

์ •๋ง ๋Œ€๋‹จํžˆ ๋ฌด์„ญ์ง€ ์•Š์„ ์ˆ˜ ์—†์—ˆ๋‹ค

๊ทธ๋Ÿผ์—๋„ ๊ฐœ๋ฐœ์ž๊ฐ€ ๊นƒ์„ ๋‹ค๋ฃฐ ์ˆ˜ ์—†๋‹ค๋ฉด ํšŒ์‚ฌ์—์„œ ๋ชป์“ด๋‹ค๊ณ  ํ•  ์ •๋„๋กœ ์ค‘์š”ํ•˜๊ธฐ์—

์–ธ์  ๊ฐ€๋Š” ๊ผญ ์ œ๋Œ€๋กœ ๊ณต๋ถ€ํ•ด์•ผ๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค

์˜ค๋Š˜์€ ํŠœํ† ๋ฆฌ์–ผ์ด๊ณ  ์ •๋ง ๊ฐ„๋‹จํ•œ ๊ธฐ๋Šฅ๋“ค๋งŒ ๋ฐฐ์› ์ง€๋งŒ ๋ง์ด๋‹ค

๋ฒ„์ „๊ด€๋ฆฌ, ๊ณผ๊ฑฐ๋กœ ๋Œ์•„๊ฐˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ 

๋งˆ์น˜ ํƒ€์ž„๋จธ์‹ ์„ ํƒ€๊ณ  ์—ฌํ–‰ํ•˜๋Š” ๋Š๋‚Œ์ด ๋„ˆ๋ฌด ๋‚ญ๋งŒ์ ์ด๋‹ค

์‹ค์ œ๋กœ๋Š” ์ฝ”๋“œ๋ฅผ ์ด์ „์œผ๋กœ ๋˜๋Œ๋ฆฐ๋‹ค๋Š”๊ฒŒ ๊ทธ๋ ‡๊ฒŒ ์ข‹์€ ์˜๋ฏธ๊ฐ€ ์•„๋‹ ๊ฒƒ ๊ฐ™์ง€๋งŒ ๐Ÿซข

profile
Always, we are friend ๐Ÿงก

0๊ฐœ์˜ ๋Œ“๊ธ€