-
GIT ๋ธ๋์น ๊ด๋ฆฌ, ๋ถ๊ฐ ๊ธฐ๋ฅTopic/git 2022. 2. 15. 13:47๋ฐ์ํ
GIT Branch ๐ฒ
๋ธ๋์น: ๋ ๋ฆฝ์ ์ผ๋ก ์ด๋ค ์์ ์ ์งํํ๊ธฐ ์ํ ๊ฐ๋ ์ด๋ค.
๋ธ๋์น์ ์ฅ์
1. ํ ์์ค ์ฝ๋์์ ๋์์ ๋ค์ํ ์์ ์ ํ ์ ์๋ค.
2. ์์ค์ฝ๋์ ํ ์์ ๊ณผ ๋์ผํ ์ํ๋ฅผ ๋ง๋ค๊ณ , ๋ธ๋์น๋ฅผ ๋๋๋ค๋ฉฐ ์์ ์ ์ํํ ์ ์๋ค.
3. ๊ฐ๊ฐ์ ๋ธ๋์น์์ ์๊ธด ๋ณํ๊ฐ ๋ค๋ฅธ ๋ธ๋์น์ ์ํฅ์ ์ฃผ์ง ์๊ณ ๋ ๋ฆฝ์ ์ผ๋ก ์ฝ๋ฉ์ ์งํํ ์ ์๋ค.Chapter 1. ํผ์ ์์ ํ ๋
๊น์ฝ๋ฉ์ด๋ forkํ codestates ๊นํ ๋ฆฌํ์งํ ๋ฆฌ๋ฅผ ๋ณธ์ธ์ local์์ ์์ ํ๋ ค๊ณ ํฉ๋๋ค. ๋ณต์ฌํ ๊นํ ๋ฆฌํ์งํ ๋ฆฌ ์ฃผ์๋ https://github.com/kimcoding/test.git ์ ๋๋ค.
$ git clone https://github.com/kimcoding/test.git
local working directory์์ index.js ํ์ผ์ ์ถ๊ฐํ์ต๋๋ค. ๊ธฐ์กด๊ณผ ๋ณ๊ฒฝ๋ ํ์ผ๋ค์ด ์ด๋ค ๊ฒ์ด ์๋์ง ํ์ธํด ๋ณด๋ ค๊ณ ํฉ๋๋ค.
$ git status
local ์ index.js ํ์ผ์ staging area๋ก ์ฎ๊ธฐ๋ ค๊ณ ํฉ๋๋ค.
git add index.js
local ์ index.js ํ์ผ์ staging area๋ก ์ฎ๊ธฐ๋ ค๊ณ ํฉ๋๋ค.
git add index.js
๋ด ๊นํ ๋ฆฌํ์งํ ๋ฆฌ์ 'index.js ์์ ' ์ด๋ผ๊ณ ์ปค๋ฐ ๊ธฐ๋ก์ ๋จ๊ธฐ๋ ค๊ณ ํฉ๋๋ค.
git commit -m 'index.js ์์ '
์.. index.js ํ์ผ์์ ์คํ๋ฅผ ๋ฐ๊ฒฌํ์ด์. ์์ ์ ํด์ผํ๋๋ฐ ๋ถํ์ํ ์ปค๋ฐ์ ๋ ํ๊ณ ์ถ์ง๋ ์์ต๋๋ค. ์ปค๋ฐํ ๊ธฐ๋ก์ ๋๋๋ ค์ ์ด์ ์ผ๋ก ๋์๊ฐ๋ ๋ฐฉ๋ฒ์ ์์๊น์?
git reset HEAD~1
์์ ์ ์๋ฃํ์ด์! ๋ค์ index.js ํ์ผ์ staging area๋ก ์ฎ๊ฒจ๋ณผ๊น์?
git add index.js
์๊น์ ๊ฐ์ด 'index.js ์์ ' ์ด๋ผ๋ ๋ฉ์์ง๋ก ์ปค๋ฐ ๊ธฐ๋ก์ ๋จ๊ฒจ๋ด ์๋ค.
git commit -m 'index.js ์์ '
๋ด ๊นํ origin ๋ฆฌํ์งํ ๋ฆฌ์ main์ผ๋ก ํธ์ฌํฉ๋๋ค.
git push origin main
๋ด ์ปค๋ฐ ๋ก๊ทธ๋ฅผ ํ์ธํ๋ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํด๋ณด์ธ์.
git log
Chapter 2. ํจ๊ป ์์ ํ ๋
๊น์ฝ๋ฉ์ local working directory๋ฅผ Git์ ๊ด๋ฆฌ ํ์ ๋ค์ด๊ฐ๊ฒ ํด ์ฃผ๋ ค๊ณ ํฉ๋๋ค.
git init
ํผ์ ์์ ์ ์กฐ๊ธ ์งํํ๊ณ commit ๊ธฐ๋ก์ ๋จ๊ฒผ์ต๋๋ค. ๋ด Remote Repository์ ์ฐ๊ฒฐํด์ Remote ์์๋ ์ด ์ฝ๋๋ฅผ ์ ์ฉํด์ผ๊ฒ ์ด์. origin์ด๋ผ๋ ์ด๋ฆ์ผ๋ก ๋ด Remote Repository๋ฅผ ๋ฑ๋กํ์ธ์.
๋ด Repository ๋งํฌ๋ https://github.com/kimcoding/test ์ ๋๋ค.git remote add origin https://github.com/kimcoding/test
ํ์ด์ ํจ๊ป ์์ ์ ์งํํ๋ ค๊ณ ํฉ๋๋ค. ์ง๊ธ๊น์ง main ๋ธ๋์น์ ์ปค๋ฐํ ๊ธฐ๋ก์ ๋ฐฉ๊ธ ๋ฑ๋กํ origin remote repository์ ์ฌ๋ ค์, ํ์ด์๊ฒ ์ฝ๋๋ฅผ ๊ณต์ ํด์ผ๊ฒ ์ด์.
git push origin main
ํ์ด๊ฐ ๋ด Remote Repository๋ฅผ Fork ํ๋ค๊ณ ํฉ๋๋ค. ํ์ด์ Remote Repository๋ฅผ ๋ด Local์ pair๋ผ๋ ์ด๋ฆ์ผ๋ก ๋ฑ๋กํด์ผ๊ฒ ์ด์. ํ์ด์ ๋ฆฌํ์งํ ๋ฆฌ ๋งํฌ๋ https://github.com/pair/test ์ ๋๋ค.
git remote add pair https://github.com/pair/test
๋ฆฌ๋ชจํธ ๋ฆฌํ์งํ ๋ฆฌ๊ฐ ์ ์ฐ๊ฒฐ๋ ๊ฒ์ด ๋ง๋์ง ๋ชจ๋ฅด๊ฒ ์ด์. ์ฐ๊ฒฐ๋ ๋ฆฌ๋ชจํธ ๋ฆฌํ์งํ ๋ฆฌ์ ๋ชฉ๋ก๊ณผ ์ฃผ์๋ค์ ํ์ธํด ๋ณผ๊น์?
git remote -v
๋ฆฌ๋ชจํธ ์ฐ๊ฒฐ์ด ์๋ฃ๋์์ผ๋ ํ์ด์ ๋๋์ด์ ์์ ์ ์งํํ์ต๋๋ค. ๋ด commit์ Pushํ๊ธฐ ์ ์ ํ์ด๊ฐ ์์ ํด์ ๋ณธ์ธ์ Remote Repository์ ์ฌ๋ ค ๋์ ๋ด์ฉ์ ํฉ์น๋ ค๊ณ ํฉ๋๋ค. ํ์ด์ ์ฝ๋๋ฅผ ๋ด Local๋ก ๋ฐ์์ฌ ์ ์์๊น์?
git pull pair main
ํน์ commit ์์ ์ผ๋ก๋ถํฐ ๊ฐ๊ธฐ ๋ค๋ฅธ commit์ ๋ง๋ค๋ฉด, ๊ธฐ๋ณธ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ด ์๋์ผ๋ก merge๊ฐ ๋ฉ๋๋ค. ์ด์ ๋ด Remote Repository์๋ Local์ ๋ด์ฉ์ ๋ฐ์ํฉ์๋ค.
git push origin main
๋ด๊ฐ footer.html ํ์ผ์ ์์ ํ์ต๋๋ค. ์์ ํ ์ฌํญ์ commit ํ๊ธฐ ์ํด ๋จผ์ staging area์ ์์ ํ ํ์ผ์ ์ถ๊ฐํด์ฃผ์ธ์.
git add footer.html
staging area์ ํ์ผ์ด ์ถ๊ฐ๋์์ต๋๋ค. 'footer ์์ ' ์ด๋ผ๋ ๋ฉ์์ง๋ก commit ์ ์งํํด์ฃผ์ธ์.
git commit -m 'footer ์์ '
ํ์ด๋ footer.html์ ๋ณ๊ฒฝํ ์ฌํญ์ด ์๋ค๊ณ ํฉ๋๋ค. ๋ด ์ปค๋ฐ์ Remote์ ํธ์ํ๊ธฐ ์ ์ ํ์ด์ ์ฝ๋๋ฅผ ๋ด ์ปดํจํฐ๋ก ๋ฐ์์ฌ ์ ์์๊น์?
git pull pair main
์.. ํํ ํ์ด๋ footer.html ํ์ผ์ ๋์ผํ ๋ผ์ธ์ ์์ ํ๊ตฐ์. ํ์ด๊ฐ ์์ฑํ ํ์ผ๊ณผ์ ์ถฉ๋์ด ๋ฐ์ํ์ต๋๋ค.
...์ถฉ๋์ด ์๊ธด ๋ถ๋ถ์ ์์ ์ ์๋ฃํ์ด์! ๋ค์ Remote Repository์ Push ํ๊ธฐ ์ํด์ ์์ ํ ํ์ผ์ staging area์ ์ถ๊ฐํด์ฃผ์ธ์.git add .
์ถฉ๋์ด ํด๊ฒฐ๋ ํ staging area์ ์ฌ๋ผ๊ฐ ํ์ผ์ ์๋์ผ๋ก commit ๋ฉ์์ง๊ฐ ์์ฑ๋ฉ๋๋ค. ์๋ ์์ฑ๋ commit ๋ฉ์์ง๋ฅผ ์ ์ฉํ๋ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ์ธ์.
git commit
๋ค์๊ณผ ๊ฐ์ด merge commit ๋ฉ์์ง๊ฐ ์๋์ผ๋ก ์์ฑ๋ฉ๋๋ค. ์ด์ ๋ด Remote Repository์๋ Local Repository์ ๋ด์ฉ์ ๋ฐ์ํฉ์๋ค.
git push origin main
Chapter 3. ๋ธ๋์น ์ด์ฉ
Github ์์ ๊ณต๋ ํ๋ก์ ํธ Repository๋ฅผ ์์ฑํ์ด์. ๊ฐ์์ Repository๋ก Fork ํ๊ณ clone ์ ๋ฐ์์ต๋๋ค. ๋ด๊ฐ ๋งก์ ํ์๊ฐ์ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ธฐ ์ํด์ feat/signup ์ด๋ผ๋ ๋ธ๋์น๋ฅผ ์์ฑํ๊ณ ํด๋น ๋ธ๋์น๋ก ์ด๋ํด ๋ณผ๊น์?
git checkout -b feat/signup
feat/signup ๋ธ๋์น๋ฅผ ๋ง๋ค์์ต๋๋ค. ์์ฑํ ๋ธ๋์น ๋ชฉ๋ก๊ณผ ๋ด๊ฐ ํ์ฌ ์ด๋ค ๋ธ๋์น์ ์๋์ง ํ์ธํด ๋ด ์๋ค.
git branch
๊ธฐ๋ณธ ํ์๊ฐ์ ๊ธฐ๋ฅ ๊ตฌํ์ ์๋ฃํ์ต๋๋ค! ์ฌ๊ธฐ์ ์ถ๊ฐ๋ก ํ์ด์ค๋ถ์ผ๋ก ๊ฐ์ ํ๊ธฐ ๊ธฐ๋ฅ์ ๋ง๋ค๊ณ ์ถ์ด์. ๊ตฌํํด๋์ ๊ธฐ๋ณธ ํ์๊ฐ์ ๊ธฐ๋ฅ์ด ๋ง๊ฐ์ง ์๋ ์์ผ๋ feat/signup-oauth ๋ธ๋์น๋ฅผ ํ๋ ๋ ๋ง๋ค์ด์ ์์ ํด ๋ณผ๊น์?
git checkout -b feat/signup-oauth
์์ ํ์๊ฐ์ ๊ธฐ๋ฅ๊น์ง ๊ตฌํ์ ์๋ฃํ์ต๋๋ค! ๊ตฌํํ ๊ธฐ๋ฅ์ feat/signup ๋ธ๋์น์ ๋ณํฉํ๋ ค๊ณ ํฉ๋๋ค. ๋จผ์ feat/signup ๋ธ๋์น๋ก ์ด๋ํ์ธ์.
git checkout feat/signup
feat/signup-oauth ๋ธ๋์น์ ๋ด์ฉ์ feat/signup ๋ธ๋์น๋ก ๋ณํฉํ๋ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ์ธ์.
git merge feat/signup-oauth
ํ์๊ฐ์ ๊ธฐ๋ฅ ๊ตฌํ์ด ์๋ฃ๋ feat/signup ๋ธ๋์น๋ฅผ Remote Repository๋ก ์ ๋ก๋ํ์ธ์.
git push origin feat/signup
๊ตฌ๊ธ ๋ก๊ทธ์ธ ๊ธฐ๋ฅ๋ ์ถ๊ฐ๋ฅผ ํด ๋ณด๋ ค๊ณ ์๋ํ๋ค๊ฐ ์ด๋ ค์์ ๊ทธ๋ง๋์์ต๋๋ค. ์์ ํ๋ ์ฝ๋๋ฅผ ์ ์ ๋ค๋ฅธ ๊ณต๊ฐ์ ์ ์ฅํด ๋ ๋ฐฉ๋ฒ์ด ์์๊น์?
git stash
๋ฐ์ํ'Topic > git' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ Github ] ๊นํ๋ธ ๋ ํฌ์งํ ๋ฆฌ ์ด๋ฆ ๋ณ๊ฒฝ ํ ๊ธฐ์กด ๋ก์ปฌ ํ๋ก์ ํธ ์ธํ ๋ณ๊ฒฝํ๋ ๋ฐฉ๋ฒ (0) 2023.08.26