๐โโ๏ธ ์์๋ณผ ๋ด์ฉ
clone
, pull request(PR)
, conflicts
, pull
clone
github์ ์๋ ์ ์ฅ์(repository)๋ฅผ ๋ก์ปฌ๋ก ๋ค์ด๋ก๋ํ๋ ๊ฒ์ "๋ณต์ (clone
)ํ๋ค"๋ผ๊ณ ๋งํ๋ค.
ํด๋น remote repository ๋ฅผ ๋ด ์ปดํจํฐ๋ก ๋ฐ์์ค๊ธฐ ์ํด,
ํด๋น repo ๋ฅผ ๋ค์ด๋ก๋ ๋ฐ๊ณ ์ถ์ ๊ฒฝ๋ก๋ก ์ด๋ํ ๋ค git clone
๋ช
๋ น์ด์ ๋ฐฉ๊ธ ๋ณต์ฌํด์ค URL ์ ๋ถ์ฌ์ฃผ๊ณ ์คํํ๋ค.
๋๋ github์ ์๋ ThisIsTest
repo๋ฅผ ํด๋ก ํด๋ณด์๋ค.
์์ฑ์์ : git clone {ํด๋น ๋ ํฌ์งํ ๋ฆฌ ์ฃผ์}
$ ~/Desktop/git-test git clone https://github.com/ryuwisdom/ThisIsTest.git 'ThisIsTest'์ ๋ณต์ ํฉ๋๋ค... remote: Enumerating objects: 6, done. remote: Counting objects: 100% (6/6), done. remote: Compressing objects: 100% (4/4), done. remote: Total 6 (delta 0), reused 6 (delta 0), pack-reused 0 ์ค๋ธ์ ํธ ๋ฌถ์ ํธ๋ ์ค: 100% (6/6), 638 bytes | 106.00 KiB/s, ์๋ฃ.
clone
ํ git-testํด๋์ ThisIsTestํด๋๊ฐ ์์ฑ๋์๋ค.
์ด์ฒ๋ผ clone
์ ํ๋ฉด GitHub repo ์ ์ด๋ฆ์ ๊ทธ๋๋ก ๋ด ํด๋๊ฐ ์์ฑ๋๊ณ cd ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํด ํด๋น ํด๋๋ก ์ด๋ํ๋ฉด, clone ์์ ์ remote repo์ ์กด์ฌํ๋ ๋ชจ๋ ํด๋ ๋ฐ ํ์ผ๋ค์ด ๊ทธ๋๋ก ๋ณต์ ๋์ด ์๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
์ด์ Git(1)์์ ์ดํด๋ณด์๋ flow ํ PR์ ํ ๊ฒ์ด๋ค.
- git add
โฃ git commit
โฃ git push
~/Desktop/git-test/ThisIsTest ryu git add . ~/Desktop/git-test/ThisIsTest ryuโ git commit -m 'add emoji' [ryu 5a4b34e] add emoji Committer: ๋ฅ์งํ <ryujihye@lyujihyeui-MacBook-Pro.local> ์ด๋ฆ๊ณผ ์ ์๋ฉ์ผ ์ฃผ์๋ฅผ ์ฌ์ฉ์ ์ด๋ฆ๊ณผ ํธ์คํธ ์ด๋ฆ์ ์ด์ฉํด์ ์๋์ผ๋ก ์ค์ ํ์ต๋๋ค. ์ด ์ ๋ณด๊ฐ ๋ง๋์ง ํ์ธํ์ญ์์ค. ์ด ๋ฉ์์ง๋ฅผ ๋ณด์ง ์์ผ๋ ค๋ฉด ์ ๋ณด๋ฅผ ๋ช ์์ ์ผ๋ก ์ค์ ํ์ญ์์ค. ๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํ๊ณ ํธ์ง๊ธฐ์ ์๋ด์ ๋ฐ๋ผ ์ค์ ํ์ผ์ ํธ์งํ์ญ์์ค: git config --global --edit ์ด๋ ๊ฒ ํ ๋ค์, ์ด ์ปค๋ฐ์ ์ฌ์ฉํ ์ ์ ์ ๋ณด๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ํด์ ๋ฐ๊ฟ ์ ์์ต๋๋ค: git commit --amend --reset-author 1 file changed, 1 insertion(+), 1 deletion(-) ~/Desktop/git-test/ThisIsTest ryu git push origin ryu ์ค๋ธ์ ํธ ๋์ดํ๋ ์ค: 5, ์๋ฃ. ์ค๋ธ์ ํธ ๊ฐ์ ์ธ๋ ์ค: 100% (5/5), ์๋ฃ. Delta compression using up to 4 threads ์ค๋ธ์ ํธ ์์ถํ๋ ์ค: 100% (3/3), ์๋ฃ. ์ค๋ธ์ ํธ ์ฐ๋ ์ค: 100% (3/3), 353 bytes | 353.00 KiB/s, ์๋ฃ. Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 remote: Resolving deltas: 100% (1/1), completed with 1 local object. remote: **remote: Create a pull request for 'ryu' on GitHub by visiting:** remote: https://github.com/ryuwisdom/ThisIsTest/pull/new/ryu remote: To https://github.com/ryuwisdom/ThisIsTest.git * [new branch] ryu -> ryu ~/Desktop/git-test/ThisIsTest ryu
์ด์ PR์ ํ ์ ์๋ ์ํ๊ฐ ๋์๋ค!
PR์ด ๋ฌด์์ธ์ง ์๋์ ๐ ๐
pull-request(PR)
๋์ ๋ธ๋์น์ ๊ธฐ๋ณธ ๋ธ๋์น์ธ Master ๋ธ๋์น์ merge์ ๊ฑฐ์ณ์ผ ํ๋ ๋จ๊ณ์ด๋ค.
์์ ์ ๋ธ๋์น๋ฅผ ์์ฑํ์ฌ push ํ๊ณ master ๋ธ๋์น์ ์ ์ฉ๋ ์ค๋น๊ฐ ๋์๋ค๋ฉด, Pull Request (PR) ๋ผ๋ ๊ฒ์ ํตํด ํ๋ก์ ํธ ์ค๋ (ํน์ ํ ๋ฆฌ๋) ์๊ฒ ๋ด๊ฐ ์์ ํ ๋ธ๋์น์ ์์ ๋ด์ฉ์ master ๋ธ๋์น์ ๋ฐ์ํด๋ฌ๋ผ๋ ์์ฒญ์ ๋ณด๋ผ ์ ์๋ค.
Pull Request ์์๋ ํด๋น repository ๋ฅผ ์ด๋ํ ์ ์๋ ๊ถํ์ด ์๋ ๊ฐ๋ฐ์๋ค์ด ์์ ๋ด์ฉ์ ๋ํ ๋ฆฌ๋ทฐ๋ฅผ ํด์ฃผ๊ฑฐ๋, ๋ณ๊ฒฝ ์ฌํญ์ ํ์ธํ๋ค. (master ๋ธ๋์น๋ก ํฉ์ณ์ง๊ธฐ ์ ์ ํ์ธํด์ผํ๊ธฐ ๋๋ฌธ์)
ํด๋น ๋งํฌ๋ฅผ ํด๋ฆญํ๋ฉด, Pull Request ๋ฅผ ์์ฑํ ์ ์๋ ํ์ด์ง๋ก ์ด๋ํ์ฌ ํด๋น PR์ ์ ๋ชฉ๊ณผ ์ด๋ค ๋ด์ฉ์ ๋ด๊ณ ์๋์ง ์ค๋ช ํ๋ Description์ ์์ฑํ ์ ์๋ค.
์์ฑ์ ์๋ฃํ๋ค๋ฉด, ํ๋จ์ 'Create pull request' ๋ฒํผ์ ๋๋ฌ ๋ง๋ฌด๋ฆฌ.
์ด๋๋ถํฐ๋ ํจ๊ป ํ์
ํ๋ ๊ฐ๋ฐ์๋ค์ด ๋ฐฉ๊ธ ๋ง๋ PR์ ๋ฆฌ๋ทฐํ๊ณ ํผ๋๋ฐฑ์ ์ฃผ๊ณ ๋ฐ์ ์ ์๋ค.
๋ชจ๋ ๋ฆฌ๋ทฐ ๋ด์ฉ์ด ๋ฐ์๋ ํ master ๋ธ๋์น์ ์ถฉ๋์ด ๋ฐ์ํ์ง ์์๋ค๋ฉด, ํด๋น PR์ master ๋ธ๋์น๋ก merge ๋ ์ํ๐
conflicts
ํญ์ ์ด๋ ๊ฒ ์์กฐ๋กญ๊ฒ merge ๊น์ง ์งํ๋๋ฉด ๋๋ฌด ์ข๊ฒ ์ง๋ง, merge ํ๊ธฐ ์ conflicts (์ถฉ๋) ๊ฐ ๋ฐ์ํ ์ ์๋ค. ์ถฉ๋์ ์ด๋ค ํ์ผ์ ๋ณ๊ฒฝ์ฌํญ์ด ๊ธฐ์ค์ด ๋๋ master ๋ธ๋์น์ ํ์ผ๊ณผ ๊ฒน์ณ, Git ์์ ์ด๋ค ๋ฒ์ ์ ์ฝ๋๋ฅผ ์ ํํด์ผํ๋์ง ๋ชจ๋ฅผ ๋ ๋ฐ์ํ๋ค. ์ด๋ฐ ์ํฉ์์๋, ๊ฐ๋ฐ์๊ฐ ์ง์ ์ฝ๋๋ฅผ ๋น๊ตํด ์ถฉ๋์ ํด๊ฒฐํ๊ณ merge ๋ฅผ ๋ง๋ฌด๋ฆฌ ํด์ผํ๋ค.
pull
Pull Request ๋ฅผ ํตํด master ๋ธ๋์น๋ฅผ ์ ๋ฐ์ดํธํ๋ค๋ฉด, ์ด์ ๋ก์ปฌ repository ๋ GitHub ์ ์๋ master ์ ์๋ก ๋ค๋ฅธ ๋ด์ฉ์ ๊ฐ์ง๊ณ ์๋ ์ํ์ด๋ค. ์ด ๋ git pull ๋ช ๋ น์ด๋ฅผ ํตํด remote ์ ์ต์ ํ๋ ์ฝ๋๋ฅผ ๋ด ๋ก์ปฌ repo ์ ๋ฐ์ํ ์ ์๋ค.
์ฐ๋ฆฌ๋ GitHub remote repo ๋งํฌ์ origin ์ด๋ผ๋ ์ด๋ฆ์ ๋ถ์ฌ์คฌ์๊ธฐ ๋๋ฌธ์ ์๋ ๋ช ๋ น์ด๋ฅผ ํตํด GitHub repo ์ master ๋ธ๋์น ๋ด์ฉ์ ๋ฐ์์ฌ ์ ์๋ค.
git pull origin master
git pull
์์ ํ ๋์ ์์ ๋ด์ฉ๊ณผ ํ์ ์๋ค์ ์์ ๋ด์ฉ์ด merge๋ ์ต์ ์ ํ์ผ์ ํ์ธํ ์ ์๋ค.
3ํ์ Git ์ฌ์ฉ์ ๋ํ ๊ฟํ์ด ์ค๋น๋์ด ์์ต๋๋ค! ๐ฐ โจ