๐ŸคผGit

๋‚ด๊ฐ€ ์จ๋ณธ git ๋ช…๋ น์–ด (๊ณ„์† ์ถ”๊ฐ€์ค‘..)

hellohailie 2023. 3. 6. 18:58
git branch -r

๐Ÿ‘‰ clone ๋ฐ›์€ ๋ ˆํŒŒ์ง€ํ† ๋ฆฌ์˜ ์ „์ฒด ๋ธŒ๋žœ์น˜ ํ™•์ธํ•˜๊ธฐ

 

git switch origin/[๋ธŒ๋žœ์น˜๋ช…]

๐Ÿ‘‰ ์›ํ•˜๋Š” ๋ธŒ๋žœ์น˜๋กœ ์ด๋™ํ•˜๊ธฐ

(checkout์ด switch๋กœ ๋ฐ”๋€œ)

 

git switch -c [์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜๋ช…]

๐Ÿ‘‰ ์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜ ๋งŒ๋“ค๊ณ  ๋ฐ”๋กœ ๊ฑฐ๊ธฐ๋กœ ์ด๋™ํ•˜๊ธฐ

 

 

git branch -d [๋ธŒ๋žœ์น˜๋ช…]

๐Ÿ‘‰ ์›ํ•˜๋Š” ๋ธŒ๋žœ์น˜ ์‚ญ์ œํ•˜๊ธฐ (์› ๋ธŒ๋žœ์น˜๊ณผ ๋น„๊ตํ•ด์„œ ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ์—†์„๋•Œ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค. )

์‚ญ์ œํ•˜๋ ค๋Š” ๋ธŒ๋žœ์น˜์—์„œ ์‚ฌ์šฉ ๋ถˆ๊ฐ€! ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜์—์„œ ์‚ญ์ œ๊ฐ€๋Šฅ

 

 

git branch -D [๋ธŒ๋žœ์น˜๋ช…]

๐Ÿ‘‰๋ธŒ๋žœ์น˜๋ฅผ ๊ฐ•์ œ๋กœ ์ง€์šฐ๊ธฐ 

์‚ญ์ œํ•˜๋ ค๋Š” ๋ธŒ๋žœ์น˜์—์„œ ์‚ฌ์šฉ ๋ถˆ๊ฐ€! ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜์—์„œ ์‚ญ์ œ๊ฐ€๋Šฅ

 

git branch -m [๋ธŒ๋žœ์น˜๋ช…]

๐Ÿ‘‰๋ธŒ๋žœ์น˜ ์ด๋ฆ„ ๋ณ€๊ฒฝ

์ด๋ฆ„ ๋ณ€๊ฒฝํ•˜๋ ค๋Š” ๋ธŒ๋žœ์น˜์—์„œ ์‚ฌ์šฉ!!

 

 

git mv [๊ธฐ์กดํด๋”๋ช…] [์ž„์‹œํด๋”๋ช…]
git mv [์ž„์‹œํด๋”๋ช…] [๋ฐ”๊ฟ€ํด๋”๋ช…]

ex) git mv feature.tsx ./feature/temp 
      git mv /feature/temp /feature/feature.tsx .

๐Ÿ‘‰ feature.tsx๋ผ๋Š” ํŒŒ์ผ์„ feature๋ผ๋Š” ํด๋” ์•ˆ์— temp๋ผ๋Š” ํŒŒ์ผ๋ช…์œผ๋กœ ๋ฐ”๊พธ๊ณ 

feature๋ผ๋Š” ํด๋” ์•ˆ์˜ temp๋ผ๋Š” ํŒŒ์ผ์„ feature๋ผ๋Š” ํด๋” ์•ˆ์˜ feature.tsx ํด๋”๋กœ ๋ฐ”๊พผ๋‹ค. 

 

์ฐธ๊ณ ํ•œ ๋ธ”๋กœ๊ทธ

https://velog.io/@whddnjs1715/git-git-mv-%EB%AA%85%EB%A0%B9%EC%96%B4

 

[git] git mv ๋ช…๋ น์–ด

์˜ค๋Š˜์€ ๊ฒฝํ—˜๋‹ด์„ ๊ธฐ๋ฐ˜์œผ๋กœ git ๋ช…๋ น์–ด์— ๋Œ€ํ•ด ์†Œ๊ฐœํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค๊ณผ ๊ฐ™์ด ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋‹ค๋ณด๋ฉด git์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์—…์„ ํ•˜๊ฒŒ๋ฉ๋‹ˆ๋‹ค.๊ทธ๋Ÿฌ๋‹ค ๋ณด๋ฉด ์„œ๋กœ ํด๋”๊ตฌ์กฐ๊ฐ€ ๋‹ค๋ฅด๊ฑฐ๋‚˜ ํด๋”๋ช…์ด ๋‹ค๋ฅธ

velog.io

 

git checkout head~1

๐Ÿ‘‰ ์ตœ์‹  ์ปค๋ฐ‹์œผ๋กœ๋ถ€ํ„ฐ ํ•œ๋‹จ๊ณ„ ์ „์œผ๋กœ ๋˜๋Œ๋ฆฐ๋‹ค. 

(git log --oneline ์œผ๋กœ ํ•ด์‹œ๋ฅผ ๋ณต์‚ฌํ•ด์„œ git checkout ํ•ด์‹œ๊ฐ’์„ ํ•ด๋„ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜จ๋‹ค. )

git checkout [๋ธŒ๋žœ์น˜๋ช…]

๐Ÿ‘‰ ์›ํ•˜๋Š” ๋ธŒ๋žœ์น˜๋กœ ๋˜๋Œ์•„์˜จ๋‹ค. 

(git switch - ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ€์žฅ ์ตœ๊ทผ์— ์ž‘์—…ํ•˜๋˜ ๋ธŒ๋žœ์น˜ ํ™˜๊ฒฝ์œผ๋กœ ๋˜๋Œ์•„์˜จ๋‹ค. )

 

git revert head~1

๐Ÿ‘‰ ๋˜๋Œ๋ ธ๋‹ค๊ฐ€ ๋Œ์•„์˜ค์ง€ ์•Š๊ณ  ์•„์˜ˆ ๋˜๋Œ๋ฆฌ๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•œ๋‹ค. 

 

revert ๋ช…๋ น์„ ํ•˜๋ฉด ํ•ด๋‹น ์ปค๋ฐ‹ ๋ฒ„์ „์œผ๋กœ ์ƒˆ๋กœ ์ปค๋ฐ‹์„ ํ•ด์•ผํ•ด์„œ ์ปค๋ฐ‹ ๋ฉ”์„ธ์ง€ ์ž…๋ ฅ์ฐฝ์ด ๋‚˜ํƒ€๋‚œ๋‹ค. 

(i ์ž…๋ ฅํ•ด์„œ ์ปค๋ฐ‹๋ฉ”์„ธ์ง€ ์ˆ˜์ •ํ•˜๊ณ , :wq ์ž…๋ ฅํ•ด์„œ ์ €์žฅํ›„ ์ข…๋ฃŒํ•œ๋‹ค. )

 

git stash

๐Ÿ‘‰ ๋ธŒ๋žœ์น˜๋ฅผ ์ž ๊น ๋ฐ”๊พธ๊ฑฐ๋‚˜ ํ• ๋•Œ ์ˆ˜์ •ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์•„์ฃผ ์ž ๊น ๋ณด๊ด€ํ•ด์„œ ์ฝ”๋“œ ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ์—†๊ฒŒ ํ•œ๋‹ค. 

 

git stash pop

๐Ÿ‘‰ ์ž ๊น ์ €์žฅํ•ด๋‘์—ˆ๋˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ๋ถˆ๋Ÿฌ์˜จ๋‹ค. 

 

git stash list

๐Ÿ‘‰ ์ง€๊ธˆ๊นŒ์ง€ ์ž ๊น ์ €์žฅํ•ด๋‘์—ˆ๋˜(stash)์˜ ์ด๋ ฅ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.  

 

stash@{0} : WIP on ๋ธŒ๋žœ์น˜๋ช…: ~~

stash@{1} : WIP on ๋ธŒ๋žœ์น˜๋ช…: ~~

stash@{2} : WIP on ๋ธŒ๋žœ์น˜๋ช…: ~~

 

git stash apply stash@{1}

๐Ÿ‘‰ ๋Œ์•„๊ฐ€๊ธฐ

 

 

git log --oneline

๐Ÿ‘‰ git ์ด๋ ฅ์„ ํ•œ์ค„์— ๋ณผ ์ˆ˜ ์žˆ๋‹ค. 

 

git commit --amend

๐Ÿ‘‰ ๋ฐ”๋กœ ์ง์ „์˜ ์ปค๋ฐ‹์„ ์ˆ˜์ •ํ•  ๋•Œ (์ปค๋ฐ‹ ๋ฉ”์„ธ์ง€ ์ˆ˜์ •, ํŒŒ์ผ์ด๋‚˜ ํด๋” ์ถ”๊ฐ€)

 

git reset ํ•ด์‹œ์ฝ”๋“œ

๐Ÿ‘‰ ์ปค๋ฐ‹ ๋‚ด์šฉ ์‹คํ–‰ ์ทจ์†Œํ•˜๊ธฐ (์ปค๋ฐ‹ ๋ฉ”์„ธ์ง€๋งŒ ์ทจ์†Œ๋˜๊ณ , ์ฝ”๋“œ๋Š” ๊ทธ๋Œ€๋กœ ๋‚จ์•„์žˆ๋‹ค. )

 

git reset --hard ํ•ด์‹œ์ฝ”๋“œ

๐Ÿ‘‰ ํ•ด๋‹น ํ•ด์‹œ์ฝ”๋“œ ์ „๊นŒ์ง€์˜ ์ปค๋ฐ‹์„ ์ทจ์†Œํ•œ๋‹ค. ์ž‘์—…ํ•œ ์ฝ”๋“œ๋“ค๋„ ์ œ๊ฑฐ๋œ๋‹ค. (์ปค๋ฐ‹ ๋ฉ”์„ธ์ง€์™€ ์ฝ”๋“œ ๋ชจ๋‘ ์‚ญ์ œํ•œ๋‹ค. )

 

git revert ํ•ด์‹œ์ฝ”๋“œ

reset์€ ์ปค๋ฐ‹์„ ์™„์ „ํžˆ ์ œ๊ฑฐํ•˜๊ณ  ๋ธŒ๋žœ์น˜ ํฌ์ธํ„ฐ๋ฅผ ๋’ค๋กœ ์ด๋™์‹œํ‚จ๋‹ค. 

revert๋Š” ์ƒˆ๋กœ์šด ์ปค๋ฐ‹์„ ๋งŒ๋“ ๋‹ค. ๊ทธ ์ƒˆ๋กœ์šด ์ปค๋ฐ‹์—์„œ ์ด์ „ ์ปค๋ฐ‹์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ทจ์†Œํ•œ๋‹ค. 

 

git checkout -- ํŒŒ์ผ๋ช…

git restore ํŒŒ์ผ๋ช…

๐Ÿ‘‰ ๋งˆ์ง€๋ง‰ ์ปค๋ฐ‹๊ณผ ๊ฐ™์€ ์ƒํƒœ๋กœ ๋งŒ๋“ค์–ด์ฃผ๊ธฐ

 

git switch master
git merge bugfix

๐Ÿ‘‰ mergeํ•˜๊ธฐ๋ฅผ ์›ํ•˜๋Š” ๋ธŒ๋žœ์น˜๋กœ ์ด๋™ํ•ด์„œ ๋จธ์ง€ํ•˜๊ธฐ.

bugfix ๋ธŒ๋žœ์น˜๋ฅผ master ๋ธŒ๋žœ์น˜์— ๋จธ์ง€ํ•œ๋‹ค. 

 

git diff

๐Ÿ‘‰ stage ๋˜์ง€ ์•Š์€ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ๋ณด์—ฌ์ค€๋‹ค. (git add ํ•˜์ง€ ์•Š์€ ๋ณ€๊ฒฝ์‚ฌํ•ญ)

 

git diff --staged

๐Ÿ‘‰ stage ๋œ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ๋ณด์—ฌ์ค€๋‹ค. (git addํ•œ ๋ณ€๊ฒฝ์‚ฌํ•ญ)

 

 

git diff HEAD

๐Ÿ‘‰ ํ˜„์žฌ ์›Œํ‚น ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ์Šคํ…Œ์ด์ง€์— ๋“ฑ๋ก๋˜์—ˆ๊ฑฐ๋‚˜ ๋“ฑ๋ก๋˜์ง€ ์•Š์€ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ HEAD์™€ ๋น„๊ตํ•œ๋‹ค. 

 

.gitignore

๐Ÿ‘‰ git์—๊ฒŒ ์ถ”์ ๋˜์ง€ ์•Š๊ฒŒ ํ•˜๊ธฐ (์ค‘์š”ํ•œ ์ •๋ณด๋“ค(key, api..), dependency, packages...)

โ˜…root ๋””๋ ‰ํ† ๋ฆฌ์— ๋งŒ๋“ ๋‹ค!

 

ํด๋”๋ช…์ด๋‚˜ ํŒŒ์ผ๋ช…์„ ์ž…๋ ฅํ•œ๋‹ค. 

ํด๋” ์ด๋ฆ„ ๋’ค์— ์Šฌ๋ž˜์‹œ๋ฅผ ๋ถ™์ด๋ฉด ์ „์ฒด ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ œ์™ธ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. 

*.log๋Š” ํ™•์žฅ์ž๋กœ, .log๋ฅผ ๊ฐ–๋Š” ๋ชจ๋“  ํŒŒ์ผ์„ ์ œ์™ธํ•œ๋‹ค. 

 

ex) .DS_Store

node_modules/

/.npm

.settings

 

♣TIP! gitignore ํŒŒ์ผ์„ ์‰ฝ๊ฒŒ ๋งŒ๋“ค์–ด์ฃผ๋Š” ์‚ฌ์ดํŠธ (gitignore.io)

https://www.toptal.com/developers/gitignore/