๐Ÿ‘ Git๊ณผ GitHub ๊ฐœ๋… ์ •๋ฆฌ

๋ฐ•์ƒ์€ยท2021๋…„ 12์›” 12์ผ
0

๐Ÿ”— Git/GitHub ๐Ÿ”—

๋ชฉ๋ก ๋ณด๊ธฐ
2/2
post-thumbnail
  • []: ์ƒ๋žต ๊ฐ€๋Šฅ
  • <>: ์ง์ ‘ ์ž…๋ ฅ

โœ’๏ธ ์šฉ์–ด ์ •๋ฆฌ

1. Git

Git์ด๋ž€ ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์ด๋‹ค. ( Version Control System, vcs )
์Šค๋ƒ…์ƒท๋ฐฉ์‹์„ ์ด์šฉํ•œ๋‹ค.

  • ์Šค๋ƒ…์ƒท๋ฐฉ์‹: ๋ชจ๋“  ํŒŒ์ผ์„ ๊ธฐ๋กํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ๋ณ€๊ฒฝ๋œ ๋ถ€๋ถ„๋งŒ ๊ธฐ๋กํ•˜๋Š” ๋ฐฉ์‹

2. GitHub

GitHub์€ Git์˜ ํ˜ธ์ŠคํŒ… ์‚ฌ์ดํŠธ์ด๋‹ค.

3. ์ €์žฅ ๊ณต๊ฐ„

  • working: ์‹ค์ œ๋กœ ํŒŒ์ผ๋“ค์ด ์กด์žฌํ•˜๋Š” ์ž‘์—…๊ณต๊ฐ„์„ ๋งํ•œ๋‹ค.
  • stage: ์ž„์‹œ๋กœ ์ €์žฅ๋˜๋Š” ๊ณต๊ฐ„์„ ๋งํ•œ๋‹ค.
  • repository: ๋ฒ„์ „์˜ ํŒŒ์ผ๋“ค์„ ๊ด€๋ฆฌํ•˜๊ณ  ์ €์žฅํ•˜๋Š” ๊ณต๊ฐ„์„ ๋งํ•œ๋‹ค.

4. ํŒŒ์ผ ์ƒํƒœ

  • untracked: ํ•œ๋ฒˆ๋„ stage๋‚˜ repository์— ๋“ฑ๋ก๋˜์ง€ ์•Š์€ ํŒŒ์ผ์„ ๋งํ•œ๋‹ค.
  • tracked: ์ด๋ฏธ stage๋‚˜ repository์— ๋“ฑ๋ก๋œ ํŒŒ์ผ์„ ๋งํ•œ๋‹ค.
  • unmodified: tracked์ด๋ฉด์„œ ์ˆ˜์ •๋˜๊ณ  ์ˆ˜์ •๋œ ๋‚ด์šฉ์„ ๋“ฑ๋กํ•˜์ง€ ์•Š์€ ์ƒํƒœ๋ฅผ ๋งํ•œ๋‹ค.
  • modified: >> ์• ๋Š” ๋ญ”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ๋‹ค.

5. HEAD

์ปค๋ฐ‹์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.
์•„๋ฌด๋Ÿฐ ์กฐ์ž‘์„ ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋Š” ์ตœ์‹  ์ปค๋ฐ‹์„ ๊ฐ€๋ฆฌํ‚จ๋‹ค.

6. commit

์ปค๋ฐ‹์„ ํŒŒ์ผ์˜ ๋ณ€ํ™”๋ฅผ ๊นƒ ์ €์žฅ์†Œ์— ์˜๊ตฌ์ ์œผ๋กœ ๊ธฐ๋กํ•˜๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.

  • HEAD + stage => ์ƒˆ๋กœ์šด ์ปค๋ฐ‹

โœ๏ธ ๋ช…๋ น์–ด ์ •๋ฆฌ

1. git config

๊ฐ repository๋งˆ๋‹ค ์ž‘์„ฑ์ž์™€ ์ด๋ฉ”์ผ์„ ๋“ฑ๋กํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.
๊ฐ๊ฐ ๋“ฑ๋กํ•˜๊ธฐ ๊ท€์ฐฎ์„ ๋•Œ --global๋กœ ๋“ฑ๋กํ•ด๋‘๋ฉด ์ž๋™์œผ๋กœ ๊ธฐ๋ณธ ์œ ์ €์™€ ์ด๋ฉ”์ผ์ด ๋“ฑ๋ก๋œ๋‹ค.

  • git config
    1. git config --global user.name <name>
    2. git config --global user.email <email>

2. git init [<location>]

git์—์„œ ๋ฒ„์ „์„ ๊ด€๋ฆฌํ•ด์ฃผ๋Š” ํด๋”๋กœ ๋งŒ๋“œ๋Š” ๋ช…๋ น์–ด์ด๋‹ค.
git init [๊ฒฝ๋กœ]๋ฅผ ์ž…๋ ฅํ•ด์ฃผ๋ฉด .gitํŒŒ์ผ์ด ์ƒ๊ธฐ๋ฉฐ ํ•ด๋‹น ํŒŒ์ผ์— ํ˜„์žฌ ํด๋”์˜ ๋ฒ„์ „์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋‹ด๊ธด๋‹ค.

3. git status

ํ˜„์žฌ ํŒŒ์ผ๋“ค์˜ ์ƒํƒœ๋ฅผ ๋ณด์—ฌ์ค€๋‹ค.
untracked, tracked, modified, unmodified ๋“ฑ์˜ ์ƒํƒœ๋ฅผ ๋ณด์—ฌ์ค€๋‹ค.

4. git add <location>

์ •ํ•ด์ค€ ํŒŒ์ผ๋“ค์„ stage๊ณต๊ฐ„(์ž„์‹œ๊ณต๊ฐ„)์œผ๋กœ ์˜ฎ๊ธฐ๋Š” ๋ช…๋ น์–ด์ด๋‹ค.

5. git rm --cached <file-name>

state์— ์žˆ๋Š” ํŒŒ์ผ์„ working์œผ๋กœ ์ด๋™ํ•˜๋Š” ๋ช…๋ น์–ด์ด๋‹ค.
์ฆ‰, git add๋ฅผ ์ทจ์†Œํ•˜๋Š” ๋ช…๋ น์–ด๋‹ค.

  • ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ .์œผ๋กœ ๋ชจ๋“  ํŒŒ์ผ์€ ์•ˆ๋˜๊ณ  ๋ช…์‹œํ•œ ํŒŒ์ผ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค.

6. git commit

stage์— ์žˆ๋Š” ํŒŒ์ผ๋“ค์„ repository๋กœ ์˜ฎ๊ธฐ๋Š” ๋ช…๋ น์–ด์ด๋‹ค.
์—ฌ๊ธฐ์„œ ๋ฐ˜๋“œ์‹œ stage์— ํŒŒ์ผ์ด ์žˆ์–ด์•ผ ํ•˜๋ฉฐ, ๋ฉ”์‹œ์ง€๊ฐ€ ์žˆ์–ด์•ผ ํ•œ๋‹ค.

  • -a: add๋ฅผ ์ž๋™์œผ๋กœ ํ•ด์ฃผ๊ณ  ์ปค๋ฐ‹์„ ํ•˜๋Š” ์˜ต์…˜ ๊ฐ’
  • -m: ๊ฐ„๋‹จํ•˜๊ฒŒ ๋ฉ”์‹œ์ง€๋ฅผ ์ž‘์„ฑํ•˜๋Š” ์˜ต์…˜ ๊ฐ’
  • --allow-empty-message: ๋ฉ”์‹œ์ง€๋ฅผ ๋น„์›Œ๋‘๊ณ  ์ปค๋ฐ‹์„ ํ—ˆ์šฉํ•˜๋Š” ์˜ต์…˜ ๊ฐ’
  • -v: ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ๋ฉ”์‹œ์ง€์— ์ถ”๊ฐ€ํ•ด์ค€๋‹ค.

7. git log

์ปค๋ฐ‹ ๋ชฉ๋ก์„ ๋ณด์—ฌ์ฃผ๋Š” ๋ช…๋ น์–ด์ด๋‹ค.

  • --oneline: ํ•œ์ค„๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋กœ๊ทธ๋ฅผ ๋ณด๋Š” ์˜ต์…˜ ๊ฐ’
  • --graph: ๊ทธ๋ž˜ํ”„๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ์˜ต์…˜ ๊ฐ’

8. git diff

  • git diff: working๊ณผ stage ๋น„๊ต
  • git diff head: HEAD์™€ state ๋น„๊ต

9. git remote

  • git remote add <์›๊ฒฉ ์ €์žฅ์†Œ ๋ณ„์นญ> <์›๊ฒฉ ์ €์žฅ์†Œ URL>: ์›๊ฒฉ ์ €์žฅ์†Œ ์—ฐ๊ฒฐ
  • git remote: ์›๊ฒฉ ์ €์žฅ์†Œ ๋ณ„์นญ ์ถœ๋ ฅ
  • git remote -v: ์›๊ฒฉ ์ €์žฅ์†Œ ๋ชฉ๋ก ์ถœ๋ ฅ
  • git remote rename <๋ณ€๊ฒฝ์ „> <๋ณ€๊ฒฝํ›„>: ์›๊ฒฉ ์ €์žฅ์†Œ ๋ณ„์นญ ๋ณ€๊ฒฝ
  • git remote show <์›๊ฒฉ ์ €์žฅ์†Œ ๋ณ„์นญ>: ๋“ฑ๋ก๋œ ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ์ƒ์„ธ๋‚ด์šฉ ์ถœ๋ ฅ
  • git remote rm <์›๊ฒฉ ์ €์žฅ์†Œ ๋ณ„์นญ>: ๋“ฑ๋ก๋œ ์›๊ฒฉ ์ €์žฅ์†Œ ์ œ๊ฑฐ

10. git push

๋กœ์ปฌ ์ €์žฅ์†Œ์— ์ปค๋ฐ‹ํ•œ ๋‚ด์šฉ์„ ์›๊ฒฉ ์ €์žฅ์†Œ์— ๋™๊ธฐํ™”ํ•˜๋Š” ๋ช…๋ น์–ด

  • git push <์›๊ฒฉ ์ €์žฅ์†Œ ๋ณ„์นญ> <๋ธŒ๋žœ์น˜>[:<์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜ ์ด๋ฆ„>]

  • -u: ์—…์ŠคํŠธ๋ฆผ ์„ค์ •

  • git push origin --delete <์›๊ฒฉ ๋ธŒ๋žœ์น˜ ์ด๋ฆ„>: ์›๊ฒฉ ๋ธŒ๋žœ์น˜ ์‚ญ์ œ

  • git push --set-upstream origin master: ๋กœ์ปฌ๊ณผ ์›๊ฒฉ ์ €์žฅ์†Œ์˜ master๋ธŒ๋žœ์น˜๋ฅผ ์—ฐ๊ฒฐ์‹œ์ผœ์ฃผ๋Š” ๋ช…๋ น์–ด

11. git clone <url> <location>

์›๊ฒฉ ์ €์žฅ์†Œ์˜ ํŒŒ์ผ๋“ค๊ณผ .gitํŒŒ์ผ์„ ์ •ํ•ด์ค€ ์œ„์น˜์— ๋ณต์‚ฌํ•ด์ฃผ๋Š” ๋ช…๋ น์–ด์ด๋‹ค.

๊ธฐ์กด ์„ค์ •๊ฐ’๊นŒ์ง€ ๋ชจ๋‘ ๋ณต์ œ๋œ๋‹ค.
( ์›๊ฒฉ ์ €์žฅ์†Œ ๋ณ„์นญ, user.name, user.email ๋“ฑ๋“ฑ )

12. git pull

์›๊ฒฉ ์ €์žฅ์†Œ ๋“ฑ๋ก ํ›„ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๊ณ , ์‚ฌ์šฉ ์‹œ ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ๊ฐฑ์‹ ๋œ ๋‚ด์šฉ์„ ๋‚ด๋ ค๋ฐ›๋Š”๋‹ค. ( ์ž๋™ ๋ณ‘ํ•ฉ )

  • ์ž๋™๋ณ‘ํ•ฉ
    ๋กœ์ปฌ ์ €์žฅ์†Œ + ๋ฐฉ๊ธˆ pull๋ฐ›์€ ๋‚ด์šฉ์„ ์ €์žฅํ•œ ์ž„์‹œ ์˜์—ญ => ์ตœ์‹  ๋‚ด์šฉ

13. git fetch

์›๊ฒฉ ์ €์žฅ์†Œ ๋“ฑ๋ก ํ›„ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๊ณ , ์‚ฌ์šฉ ์‹œ ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ๊ฐฑ์‹ ๋œ ๋‚ด์šฉ์„ ๋‚ด๋ ค๋ฐ›๋Š”๋‹ค. ( FETCH_HEAD๋ผ๋Š” branch์— ๋‚ด๋ ค๋ฐ›์Œ )

git pull๊ณผ ๋‹ค๋ฅด๊ฒŒ ์ง์ ‘ ๋ณ‘ํ•ฉ์„ ํ•ด์ค˜์•ผํ•œ๋‹ค.
( git merge origin/master ๋ช…๋ น์–ด ์‚ฌ์šฉ )

14. git branch

ํ˜„์žฌ ๋ธŒ๋žœ์น˜ ๋ชฉ๋ก๊ณผ ์‚ฌ์šฉ ๋ธŒ๋žœ์น˜๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ๋ช…๋ น์–ด

  • git branch <branch-name> [<commit-id>]
    commit-id ์ƒ๋žต ์‹œ HEAD ํฌ์ธํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑ

  • -v: ๋ธŒ๋žœ์น˜ ์„ธ๋ถ€์‚ฌํ•ญ์„ ๋ณด์—ฌ์ฃผ๋Š” ์˜ต์…˜ ๊ฐ’

  • -r: ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ๋ธŒ๋žœ์น˜ ๋ชฉ๋ก์„ ๋ณด์—ฌ์ฃผ๋Š” ์˜ต์…˜ ๊ฐ’

  • -vv: ํŠธ๋ž˜ํ‚น ๋ธŒ๋žœ์น˜ ๋ชฉ๋ก์„ ๋ณด์—ฌ์ฃผ๋Š” ์˜ต์…˜ ๊ฐ’

  • -d: ๋กœ์ปฌ ๋ธŒ๋žœ์น˜ ์‚ญ์ œ

  • -D: ๋กœ์ปฌ ๋ธŒ๋žœ์น˜ ๊ฐ•์ œ ์‚ญ์ œ

  • --merged: ๋ณ‘ํ•ฉ๋œ ๋ธŒ๋žœ์น˜๋Š” *๋กœ ํ‘œ์‹œํ•ด์ฃผ๋Š” ์˜ต์…˜ ๊ฐ’

  • git branch -u origin/<branch-name>: ๊ธฐ์กด ๋ธŒ๋žœ์น˜์— ์—…์ŠคํŠธ๋ฆผ ์ง์ ‘ ์—ฐ๊ฒฐ

15. git rev-parse <branch-name>

๋ธŒ๋žœ์น˜ ์ƒ์„ฑ์˜ ๊ธฐ์ค€์ ์ด ๋œ ์ปค๋ฐ‹ ์•„์ด๋””๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๋ช…๋ น์–ด

16. git checkout

  • git checkout <branch-name>: ํ•ด๋‹น ๋ธŒ๋žœ์น˜๋กœ ์ด๋™ ( working ๋ณ€๊ฒฝ )

  • git checkout -- <file-name>: ํ•ด๋‹น ํŒŒ์ผ๋กœ ์ด๋™ ( ํ•ด๋‹น ํŒŒ์ผ๋งŒ ์ตœ์‹  ์ปค๋ฐ‹์ƒํƒœ๋กœ ๋˜๋Œ๋ ค์คŒ )

  • git checkout <commit-id>: ์ปค๋ฐ‹ ์•„์ด๋””์— ํ•ด๋‹นํ•˜๋Š” ์ปค๋ฐ‹์œผ๋กœ ์ด๋™

  • git checkout --track origin/<branch-name>: ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ๋ธŒ๋žœ์น˜๋ฅผ ๋กœ์ปฌ ์ €์žฅ์†Œ์˜ ๋ธŒ๋žœ์น˜๋กœ ์—…์ŠคํŠธ๋ฆผํ•˜๋Š” ๋ช…๋ น์–ด
    ( ์›๊ฒฉ ๋ธŒ๋žœ์น˜๋ฅผ ๋กœ์ปฌ ๋ธŒ๋žœ์น˜๋กœ ๊ฐ€์ ธ์˜ค๋Š” ๋ช…๋ น์–ด )

  • git checkout -b <new-branch-name> origin/<branch-name>: ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ๋ธŒ๋žœ์น˜๋ฅผ ๋กœ์ปฌ ์ €์žฅ์†Œ์˜ ๋ธŒ๋žœ์น˜๋กœ ๋ณต์‚ฌํ•˜๋Š” ๋ช…๋ น์–ด

  • -: ์ด์ „ ๋ธŒ๋žœ์น˜๋กœ ์ด๋™ํ•œ๋‹ค.

  • -b: ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑ๊ณผ ๋™์‹œ์— ํ•ด๋‹น ๋ธŒ๋žœ์น˜๋กœ ์ด๋™

17. git stash

ํ˜„์žฌ ๋ณ€๊ฒฝ ๋‚ด์šฉ์„ ์Šคํƒํ˜•ํƒœ์˜ ์ž„์‹œ ์ €์žฅ์†Œ์— ์ €์žฅํ•ด๋‘๋Š” ๋ช…๋ น์–ด

  • git stash save "<message>": ์ž„์‹œ ์ €์žฅ์†Œ์— ๋ฉ”์‹œ์ง€๋กœ ๊ธฐ๋กํ•˜๋Š” ๋ช…๋ น์–ด

  • git stash list: ์ž„์‹œ ์ €์žฅ์†Œ ๋ชฉ๋ก์„ ๋ณด์—ฌ์ฃผ๋Š” ๋ช…๋ น์–ด

  • git stash show [-p]: ์ž„์‹œ ์ €์žฅ์†Œ์™€ ํ˜„์žฌ์˜ ์ฐจ์ด๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ๋ช…๋ น์–ด ( -p๋Š” ๋” ์ƒ์„ธํ•˜๊ฒŒ ๋ณด์—ฌ์คŒ )

  • git stash pop: ์ž„์‹œ ์ €์žฅ์†Œ์˜ ๊ฐ€์žฅ ์ตœ๊ทผ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๊ณ  ์„ฑ๊ณตํ•˜๋ฉด ์Šคํƒ์—์„œ ์ œ๊ฑฐํ•˜๋Š” ๋ช…๋ น์–ด

  • git stash branch <branch-name>: ๋ธŒ๋žœ์น˜๋ฅผ ์ƒˆ๋กœ ์ƒ์„ฑํ•˜๊ณ  ๋‚ด์šฉ์„ ์ฑ„์›Œ๋„ฃ์Œ ( ์„ฑ๊ณต์‹œ stash ์ œ๊ฑฐ )

  • git stash apply <stash-name>: ํ•ด๋‹น stash๋ฅผ ๋ณต์‚ฌํ•˜๊ณ  ์Šคํƒ์—์„œ ์ œ๊ฑฐํ•˜์ง€ ์•Š์Œ

  • --index: stash์—์„œ ๋ถˆ๋Ÿฌ์˜ฌ๊ฒฝ์šฐ working๊ณผ stage๋ฅผ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š๊ณ  ๋ชจ๋‘ working์— ๋„ฃ์–ด์„œ ๋Œ๋ ค์คŒ
    ํ•ด๋‹น ์˜ต์…˜์„ ๋ถ€์—ฌํ•˜๋ฉด working๊ณผ stage๋ฅผ ๊ตฌ๋ถ„ํ•ด์„œ ๋ถˆ๋Ÿฌ์˜จ๋‹ค.

18. git merge <branch-name>

  • -e: 3-way ๋ณ‘ํ•ฉ ์‹œ ๋ณ‘ํ•ฉ ๋ฉ”์‹œ์ง€๋ฅผ ์ง์ ‘ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ์˜ต์…˜ ๊ฐ’ ( --edit )
  • --abort: conflict ์ดํ›„์— ์‹คํ–‰ํ•˜๋ฉด ๋ณ‘ํ•ฉ์„ ์ทจ์†Œ์‹œ์ผœ์ฃผ๋Š” ์˜ต์…˜ ๊ฐ’

๐Ÿ‘ ํŒ

1. ์ปค๋ฐ‹ ์•„์ด๋””

SHA1์ด๋ผ๋Š” ํ•ด์‹œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ค‘๋ณต๋˜์ง€ ์•Š๊ณ  ์•ž 7์ž๋ฆฌ์ •๋„๋งŒ ์‚ฌ์šฉํ•ด๋„ ๊ฒน์น˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ตณ์ด ์ „๋ถ€๋ฅผ ๋ณต์‚ฌํ•ด์„œ ์‚ฌ์šฉํ•  ํ•„์š” ์—†๋‹ค.

2. ์ปค๋ฐ‹๊ณผ ํ‘ธ์‹œ ์ˆœ์„œ

๊นƒ์˜ ์ปค๋ฐ‹์€ ์ด์ „ ์ปค๋ฐ‹์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒˆ๋กœ์šด ์ปค๋ฐ‹์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ˜๋“œ์‹œ ์ตœ์‹  ์ปค๋ฐ‹์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ปค๋ฐ‹์„ ํ•ด์•ผ ํ•œ๋‹ค.

๊ณต๋™ ๊ฐœ๋ฐœ์ผ ๊ฒฝ์šฐ์— push๋ฅผ ํ•  ๋•Œ๋„ ๋™์‹œ์— ์ž‘์—…ํ•˜๊ณ  ๊ฐ์ž์˜ ์ž‘์—… ๋‚ด์šฉ์„ ์ปค๋ฐ‹ ํ•˜๊ฒŒ ๋˜๋ฉด ์ดํ›„์— pushํ•˜๋Š” ๊ฐœ๋ฐœ์ž๋Š” ์ตœ์‹  ์ปค๋ฐ‹์„ ๊ธฐ๋ฐ˜์œผ๋กœ pushํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฅ˜๊ฐ€ ๋‚˜๊ฒŒ ๋œ๋‹ค.

๋”ฐ๋ผ์„œ push์ „์—๋Š” pull or fetch๋ฅผ ์ด์šฉํ•ด์„œ ์ตœ์‹  ์ปค๋ฐ‹์„ ์ ์šฉํ•ด์•ผ ํ•œ๋‹ค.

3. ๋ธŒ๋žœ์น˜

๋ธŒ๋žœ์น˜๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ์‹ค์ œ ์ฝ”๋“œ๋ฅผ ๋ณต์‚ฌํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ์‹œ์ž‘ ์œ„์น˜์— ๊ฐ€์ƒ ํด๋”๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๋‹ค.

  • ๋ธŒ๋žœ์น˜๋ฅผ ๋งŒ๋“œ๋Š” ๊ธฐ์ค€์€ ๋ธŒ๋žœ์น˜ or ์ปค๋ฐ‹์„ ๊ธฐ์ค€์œผ๋กœ ์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜๋ฅผ ๋งŒ๋“ ๋‹ค.

  • ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•œ๋‹ค๊ณ  ์ฆ‰์‹œ ์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ๊ฒƒ์€ ์•„๋‹˜
    ์ตœ์ดˆ์—๋Š” ํฌ์ธํ„ฐ๋งŒ ์ƒ์„ฑ๋˜๊ณ  ์ดํ›„์— ์ƒ์„ฑํ•œ ๋ธŒ๋žœ์น˜์—์„œ ์ปค๋ฐ‹์„ ํ•˜๋ฉด ์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

  • ๋ธŒ๋žœ์น˜๋ฅผ ์‚ญ์ œํ•  ๋•Œ ์กฐ๊ฑด์€ ํ˜„์žฌ ๋ธŒ๋žœ์น˜๊ฐ€ ์•„๋‹ˆ๊ณ , ์ˆ˜์ •์‚ฌํ•ญ์ด ์—†์–ด์•ผ ํ•œ๋‹ค.

4. ์ฒดํฌ์•„์›ƒ

์ฒดํฌ์•„์›ƒ์‹œ์—๋Š” HEAD ํฌ์ธํ„ฐ๊ฐ€ ๊ฐ™์ด ์ด๋™๋œ๋‹ค.
์ฒดํฌ์•„์›ƒ์ „์—๋Š” working์„ ์ •๋ฆฌํ•˜๊ณ  ์ด๋™ํ•ด์•ผ ํ•œ๋‹ค.

๋ธŒ๋žœ์น˜ ์ด๋™ ์ž์ฒด๊ฐ€ working์„ ๋ฐ”๊พธ๋Š” ํ–‰์œ„์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ์กด์— ๋ฐ”๊ฟจ๋˜ ์ƒํƒœ๊ฐ€ ์œ ์ง€๋  ์ˆ˜ ์—†๋‹ค. ๋”ฐ๋ผ์„œ ์ปค๋ฐ‹, ์Šคํƒœ์‹œ ๊ฐ™์€ ํ–‰์œ„๋กœ ๊ธฐ์กด ์ƒํƒœ๋ฅผ ์ €์žฅํ•ด๋‘๊ณ  ์ด๋™ํ•ด์•ผ ํ•œ๋‹ค.

5. HEAD

HEAD๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ํ˜„์žฌ ์„ ํƒ๋œ ๋ธŒ๋žœ์น˜์˜ ์ตœ์‹  ์ปค๋ฐ‹์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ์ž…๋‹ˆ๋‹ค.
์ปค๋ฐ‹, ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ ๋“ฑ์˜ ์ปค๋ฐ‹์„ ์ด์šฉํ•ด์„œ ์ƒˆ๋กœ์šด ๊ฒฐ๊ณผ๋ฌผ์„ ์ƒ์„ฑํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ( ์ฆ‰์‹œ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ์„ฑ๋Šฅ์ ์œผ๋กœ ์œ ๋ฆฌํ•จ )

  • HEAD^n: ํ˜„์žฌ HEAD๋ฅผ ๊ธฐ์ค€์œผ๋กœ n๋ฒˆ์งธ ์ด์ „์˜ ์ปค๋ฐ‹์„ ๊ฐ€๋ฆฌํ‚ด
  • HEAD~n: ํ˜„์žฌ HEAD๋ฅผ ๊ธฐ์ค€์œผ๋กœ n๋ฒˆ์งธ ์ด์ „์˜ ์ปค๋ฐ‹์„ ๊ฐ€๋ฆฌํ‚ด

6. ์—…์ŠคํŠธ๋ฆผ ํŠธ๋ž˜ํ‚น

๋กœ์ปฌ ๋ธŒ๋žœ์น˜์™€ ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ๋ธŒ๋žœ์น˜์™€์˜ ๋งค์นญ์„ ์—…์ŠคํŠธ๋ฆผ ํŠธ๋ž˜ํ‚น์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

ํŠธ๋ž˜ํ‚น ๋ธŒ๋žœ์น˜๋Š” ์›๊ฒฉ ์ €์žฅ์†Œ ๋ธŒ๋žœ์น˜์™€ ๋กœ์ปฌ ๋ธŒ๋žœ์น˜๋ฅผ ์—ฐ๊ฒฐํ•ด ์ฃผ๋Š” ์ค‘๊ฐ„ ๋‹ค๋ฆฌ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

์›๊ฒฉ ์ €์žฅ์†Œ๋ฅผ ํด๋ก  ํ•œ๋‹ค๊ณ  ํ•ด์„œ ๋ชจ๋“  ๋ธŒ๋žœ์น˜๊นŒ์ง€ ํด๋ก  ๋˜์ง€ ์•Š๋Š”๋‹ค.
ํšจ์œจ์„ฑ์˜ ์ด์œ ๋กœ ์›ํ•˜๋Š” ๋ธŒ๋žœ์น˜๋Š” ์ง์ ‘ ์—…์ŠคํŠธ๋ฆผ์„ ํ•ด์ค˜์„œ ๋กœ์ปฌ๊ณผ ์›๊ฒฉ ๋ธŒ๋žœ์น˜๋ฅผ ์—ฐ๊ฒฐ์‹œ์ผœ์ค˜์•ผ ํ•œ๋‹ค.

7. ๋ณ‘ํ•ฉ

๋ธŒ๋žœ์น˜๋‹จ์œ„๋กœ ๋ณ‘ํ•ฉ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๋ณ‘ํ•ฉ์€ Fast-Forward ๋ณ‘ํ•ฉ๊ณผ 3-way ๋ณ‘ํ•ฉ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.
๋ณ‘ํ•ฉ์€ ์‹คํ–‰ํ•˜๋Š” ๋ธŒ๋žœ์น˜์— ๊ฒฐ๊ณผ๋ฌผ์ด ์ƒ๊น๋‹ˆ๋‹ค.

7.1 Fast-Forward ๋ณ‘ํ•ฉ

๋ธŒ๋žœ์น˜๊ฐ€ ์ผ์ง์„ ์œผ๋กœ ํ•˜๋‚˜์˜ ์ค„๊ธฐ๋กœ ์ด์–ด์ง„ ์ƒํƒœ์—์„œ ๋ณ‘ํ•ฉํ•  ๊ฒฝ์šฐ ์ ์šฉํ•˜๋Š” ๋ฐฉ์‹

7.2 3-way ๋ณ‘ํ•ฉ

๋ธŒ๋žœ์น˜1, ๋ธŒ๋žœ์น˜2, ๋‘ ๊ฐœ์˜ ๋ธŒ๋žœ์น˜์˜ ๊ณตํ†ต๋œ ์‹œ์ž‘์ปค๋ฐ‹ 3๊ฐ€์ง€๊ฐ€ ํ•ฉ์ณ์ง€๋Š” ๋ณ‘ํ•ฉ์— ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹
conflict์ด ์—†์„ ๊ฒฝ์šฐ์—๋Š” ์ž๋™์œผ๋กœ merge ์ปค๋ฐ‹ ๋กœ๊ทธ๊ฐ€ ๋‚จ๋Š”๋‹ค.
conflict์ด ์žˆ์„ ๊ฒฝ์šฐ์—๋Š” ์ง์ ‘ ์ถฉ๋Œ๋‚œ ๋ถ€๋ถ„์„ ์ˆ˜์ •ํ•œ ํ›„ ์ปค๋ฐ‹ํ•ด์ค˜์•ผ ํ•œ๋‹ค.

๋งŒ์•ฝ conflict ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ์—๋Š” VSCode๋กœ ๋“ค์–ด๊ฐ€์„œ ํ™•์ธํ•ด ๋ณด๋ฉด ์‰ฝ๊ฒŒ ์ถฉ๋Œ ๋ถ€๋ถ„์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค€๋‹ค.

๐Ÿ‘‡ ์ฐธ๊ณ ํ•œ ์„œ์ 

  • Git ๊ต๊ณผ์„œ - ์ดํ˜ธ์ง„

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