๋ธ๋ก๊ทธ ์ฎ๊ฒผ์ต๋๋ค! ๐ก integer.blog
ํ์ฌ์์ Git์ ํ์ฉํ ํ์ workflow๋ฅผ ์ธํ ํ๊ธฐ ์ํด ํ์ตํ๋ฉฐ ๊ธฐ๋กํ ๋ด์ฉ์ ๋๋ค.
ํ์ฌ์ ํ์ ํ๊ฒฝ = Git + Bitbucket + Trello + Telegram
Bitbucket ๋์ Github์ ์ฌ์ฉํด๋ ๋๊ฐ์ต๋๋ค.
์ ์ฒด ํ๋ฆ
0. ์ต์ด ์ค์ (+ Workflow ์์ฝ)
1. Issue ๋ฑ๋ก
2. Issue ์์
3. Pull Request
4. PR Review
5. Issue ๋ฐ์
6. ์ ์ฅ์ Update
(๋ฒ์ธ) Clone ๋ฐ์ ํ๋ก์ ํธ Eclipes์์ ์ด๊ธฐ
0. ์ต์ด ์ค์
0.1. ํ๋ก์ ํธ ๊ด๋ฆฌ์์ผ ๊ฒฝ์ฐ
0.1.1. Bitbucket์ ํ๋ก์ ํธ ์ ์ฅ์
์์ฑ
- ํ๋ก์ ํธ ์ ์ฅ์ Owner๋ฅผ ๊ด๋ฆฌ์ ๊ฐ์ธ์ผ๋ก ํ๋ ๊ฒฝ์ฐ :
0.1.5.
๊น์ง - ํ๋ก์ ํธ ์ ์ฅ์ Owner๋ฅผ ํ ๊ณ์ ์ผ๋ก ํ๊ณ ๊ฐ์ธ ์ ์ฅ์๋ฅผ ๋ฐ๋ก ์ด์ํ๋ ๊ฒฝ์ฐ :
0.1.6.
๊น์ง
0.1.2. ์์
์ฉ develop
๋ธ๋์น ์์ฑ (master
๋ธ๋์น๋ ๋ฐฐํฌ์ฉ)
0.1.3. ์์ ์ฉ ๋ธ๋์น ์์ฑ ์ด์
- ํ๋ก์ ํธ ์ ์ฅ์์
Master
๋ธ๋์น์develop
๋ธ๋์น ๋ ๊ฐ์ง๋ฅผ ๋๊ณ ,master
๋ธ๋์น๋ ์์ฃผ ์์ ์ ์ธ ๋ฒ์ ์ ๋ฆด๋ฆฌ์ฆ ํ ๋ ์ฌ์ฉํ๊ณ ,develop
๋ธ๋์น๋ ์๋ก ์์ ๋ ์ฝ๋๋ฅผ ํตํฉํ ๋ ์ฌ์ฉํ๋ค. ๋ฆด๋ฆฌ์ฆ ํ ์์ค์ด ๋๋ฉดmaster
๋ธ๋์น๋ฅผdevelop
๋ธ๋์น๊น์ง fast-forward ํ ๋ฒ์ ์ Tag๋ก ์ถ๊ฐํ๋ค. - ๋ ๋์๊ฐ
integrate
๋ธ๋์น๋ฅผ ์ถ๊ฐํ ์ ์๋ค. master - develop - integrate - feature ๋ธ๋์น๋ฅผ ๋ง๋ค์ด feature์์ ์์ ํ ๊ฒ์ integrate์ mergeํ์ฌ feature ๋ธ๋์น๊ฐ ๊ฒ์ฆ๋๋ฉด develop ๋ธ๋์น์ merge ํ๋ค. ๊ทธ๋ฆฌ๊ณ develop ๋ธ๋์น์์ ์ถฉ๋ถํ ์์ ์ฑ์ด ๊ฒ์ฆ๋๋ฉด ๊ทธ๋ master ๋ธ๋์น์ mergeํ๋ค. - feature ๋ธ๋์น๋ develop/master ๋ธ๋์น์ merge๋๋ฉด ์ ์ฅ์์์ ์ญ์ ํ๋ค.
- ๋ฆด๋ฆฌ์ฆ ๋ฒ์ ์ ์ธ์ ๋ ๋์๊ฐ ์ ์๋๋ก ํ๊ทธ๋ฅผ ๋ค๋ ๊ฒ์ด ์ข๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฐฐํฌํ ๋ฆด๋ฆฌ์ฆ ๋ฒ์ ์ด ์ค๋น๋์๋ค๋ฉด, git์ ์ฌ์ฉํ์ง ์๋ ์ฌ๋์ ์ํด ์์ค์ฝ๋ ์ค๋
์ท์ ์์ถํ๋ค.
$git archive
๋ช ๋ น์ผ๋ก ์์ถํ ์ ์๋ค.
0.1.4. Local ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ๋ฅผ Git ์ ์ฅ์๋ก ๋ง๋ค๊ธฐ (Local์ ํ๋ก์ ํธ๊ฐ ์กด์ฌํ๋ ๊ฒฝ์ฐ)
- ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ๋ก ์ด๋ํ์ฌ
$ git init
0.1.5. Local ํ๋ก์ ํธ์ Bitbucket ์ฐ๊ฒฐ (Local์ ํ๋ก์ ํธ๊ฐ ์กด์ฌํ๋ ๊ฒฝ์ฐ)
- Local ํ๋ก์ ํธ ์์น๋ก ์ด๋
$ cd /path/to/your/repo
- ์๊ฒฉ์ ์ฅ์ ์ถ๊ฐ :
$ git remote add [ํ๋ก์ ํธ ์ ์ฅ์๋ช /๋ณ๋ช ] [ํ๋ก์ ํธ ์ ์ฅ์ ์ฃผ์]
- ์ฌ๊ธฐ์
[ํ๋ก์ ํธ ์ ์ฅ์ ์ฃผ์]
๋ ์ ์ฅ์์ ์ฃผ์์ฐฝ์ ์๋ ์ฃผ์๊ฐ ์๋๋ผclone
์ ํด๋ฆญํด์ ๋์ค๋ ์ฃผ์.(github๊ณผ bitbucket์ ์ฃผ์ ๋ชจ์ ๋ค๋ฆ) - ex)
$ git remote add HJS-SERVER https://Ryan_Han@bitbucket.org/hjskorea/hjs-server.git
- ์ฌ๊ธฐ์
์๊ฒฉ์ ์ฅ์์ Local ํ๋ก์ ํธ Push
$ git push [ํ๋ก์ ํธ ์ ์ฅ์๋ช /๋ณ๋ช ] [branch๋ช ]
ex)
$ git push HJS-SERVER develop
0.1.6. ํ ๊ณ์ ์
ํ๋ก์ ํธ ์ ์ฅ์
๋ฅผ ๊ด๋ฆฌ์ ๊ฐ์ธ ๊ณ์ ์๊ฐ์ธ ์๊ฒฉ ์ ์ฅ์
๋ก Fork
Fork ๊ธฐ๋ฅ์ Bitbucket์
ํ๋ก์ ํธ ์ ์ฅ์
์์ ์ฌ์ฉ๊ฐ์ธ ์๊ฒฉ ์ ์ฅ์
๋ฅผ๊ฐ์ธ local ์ ์ฅ์
์ ์๊ฒฉ์ ์ฅ์๋ก ์ง์ $ git remote add origin [๊ฐ์ธ ์๊ฒฉ์ ์ฅ์ ์ฃผ์]
$ git remote -v
์ ๊ฒฐ๊ณผ ์๊ฒฉ์ ์ฅ์๋ํ๋ก์ ํธ ์ ์ฅ์๋ช /๋ณ๋ช
๊ณผorigin
๋ ๊ฐ์ง๊ฐ ์์ด์ผ ํจ.
0.2. ํ๋ก์ ํธ ํ์์ผ ๊ฒฝ์ฐ
0.2.1. Fork
ํ๋ก์ ํธ ์ ์ฅ์
๋ฅผ๊ฐ์ธ ์๊ฒฉ ์ ์ฅ์
๋ก Fork (Bitbucket ์์)
0.2.2. Local ์ ์ฅ์ ์์ฑ
- ๊ฐ์์ ์ปดํจํฐ์
๊ฐ์ธ local ์ ์ฅ์
๋ก ์ฌ์ฉํ ๊ฒฝ๋ก ์ ํ ๋๋ ์์ฑ
0.2.3. Clone
๊ฐ์ธ ์๊ฒฉ ์ ์ฅ์
์์๊ฐ์ธ local ์ ์ฅ์
๋กdevelop
๋ธ๋์น๋ง Clone$ git clone -b develop --single-branch branchURL(๋ฐ๋์ ๋ณธ์ธ ์๊ฒฉ์ ์ฅ์ URL)
0.2.4. ๋ชจ๋ ๋ธ๋์น ํ์ธ
$ git branch -a
- ํ์ฌ
๊ฐ์ธ local ์ ์ฅ์
์๋develop
๋ธ๋์น๋ง ์กด์ฌํด์ผ ํ๋ค.
0.2.5. Remote(์๊ฒฉ ์ ์ฅ์) ์ค์
ํ๋ก์ ํธ ์ ์ฅ์
์ ์ต์ ํ๋develop
๋ธ๋์น์๊ฐ์ธ local ์ ์ฅ์
์develop
๋ธ๋์น๋ฅผ ๋๊ธฐํํ๊ธฐ ์ํด$ git remote add [ํ๋ก์ ํธ ์ ์ฅ์๋ช /๋ณ๋ช ] [ํ๋ก์ ํธ ์ ์ฅ์ ์ฃผ์]
-> ๋ณธ์ธ ์๊ฒฉ์ ์ฅ์ ์ฃผ์๋ก ํ์ง ๋ง๊ฒ.$ git remote -v
๋ก ์๊ฒฉ์ ์ฅ์ ํ์ธ- ํ์ธ ๊ฒฐ๊ณผ
[ํ๋ก์ ํธ ์ ์ฅ์๋ช /๋ณ๋ช ]
(ํ๋ก์ ํธ ์ ์ฅ์)์origin
(๊ฐ์ธ ์๊ฒฉ ์ ์ฅ์)๋ง ๋์์ผ ํ๋ค.
0.3. ํ์ํ ์ ์ฅ์/๋ธ๋์น ์ ๋ฆฌ
- ์ ์ฅ์
ํ๋ก์ ํธ ์ ์ฅ์
- Bitbucket์ ๊ด๋ฆฌ์๊ฐ ์์ฑํํ๋ก์ ํธ ์ ์ฅ์
. ์ด๋ฆ์ remote ์ค์ ํ ๋ ์ ํ ์ ์ฅ์ ๋ณ๋ช .๊ฐ์ธ ์๊ฒฉ ์ ์ฅ์
- ๊ฐ ๊ฐ์ธ์ด Bitbucket์ํ๋ก์ ํธ ์ ์ฅ์
๋ฅผ ๊ฐ์ธ ๊ณ์ ์ผ๋ก fork ํด์จ ์ ์ฅ์. ์ด๋ฆ์ ์๋์ผ๋ก origin.๊ฐ์ธ local ์ ์ฅ์
- ๊ฐ ๊ฐ์ธ์ ์ปดํจํฐ์๊ฐ์ธ ์๊ฒฉ ์ ์ฅ์
๋ก๋ถํฐ clone ํด์จ ์ ์ฅ์.
- ๋ธ๋์น
master ๋ธ๋์น
- develop ๋ธ๋์น์์ ์ถฉ๋ถํ ๊ฒ์ฆ๋ ๋ฒ์ ์๋ฐฐํฌํ๋ ๋ธ๋์น
develop ๋ธ๋์น
- ๊ฐ ํ์๋ค์ feature ๋ธ๋์น๋ฅผํตํฉํ๊ณ ํ ์คํธํ๋ ๋ธ๋์น
feature ๋ธ๋์น(์ต์ )
- ์ด์ ๊ธฐ๋ฐ์ผ๋ก ๋ธ๋์น๋ช ์ ์์ฑํ์์ ์ฉ ๋ธ๋์น
0.4. Workflow ์์ฝ (์ต์ด ์ค์ ํ)
1. ๊ฐ์ธ local ์ ์ฅ์ ์ต์ ํ
2. feature ๋ธ๋์น ์์ฑ
3. ์์
4. ์์
ํ feature ๋ธ๋์น๋ฅผ ๊ฐ์ธ ์๊ฒฉ ์ ์ฅ์์ push
5. ๊ฐ์ธ ์๊ฒฉ ์ ์ฅ์์ pushํ feature ๋ธ๋์น๋ฅผ ํ๋ก์ ํธ ์ ์ฅ์์ develop ๋ธ๋์น๋ก Pull Reqeust
6. 1~5 ๋ฐ๋ณต
1. Issue ๋ฑ๋ก
์๋ก์ด ์ถ๊ฐ๋ ๊ฐ๋ฅ, ๊ฐ์ ํด์ผํ ๊ธฐ๋ฅ, ๋ฒ๊ทธ ๋ฑ ๋ชจ๋ ํ๋์ Issue๋ก ๋ฑ๋กํ๊ณ ๊ทธ Issue๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์ ์ ์งํํฉ๋๋ค.
1.1. Bitbucket์์ Issue ๋ฑ๋ก
- ๊ฐ๋ฐ ํญ๋ชฉ, ๋ด๋น์, ์ผ์ , ๋ด์ฉ ๋ฑ ์์ฑ
- Issue ๋ฑ๋ก์ Telegram, ์ด๋ฉ์ผ๋ก ํ์๋ค์๊ฒ ์๋ ์๋ฆผ
- Telegram์ Bitbucket Bot ํ์ฉ
2. Issue ์์
๋ฑ๋ก๋ Issue๋ฅผ ๊ธฐ๋ฐ์ผ๋ก branch๋ฅผ ์์ฑํ์ฌ ๊ฐ๋ฐ ์์ ์คํ
2.1. ๊ฐ์ธ local ์ ์ฅ์
์ต์ ํ
- ๋ค๋ฅธ ํ์์ ์ํด ์ต์ ํ๋
ํ๋ก์ ํธ ์ ์ฅ์
์ ๋ณ๊ฒฝ ์ฌํญ์๊ฐ์ธ local ์ ์ฅ์
์ pull ํน์ fetch & merge ํ์ฌ ์ต์ ํ - ์์
์์ ์
๊ฐ์ธ local ์ ์ฅ์
๋ฅผ ์ต์ ํํ๋ ์ต๊ด ํ์
2.2. feature
๋ธ๋์น ์์ฑ
๊ฐ์ธ local ์ ์ฅ์
์์๋develop
๋ธ๋์น๋ฅผmaster
๋ธ๋์น๋ผ ์๊ฐํ๊ณ Issue์ ๊ธฐ๋ฐํ ์์ ์ฉ feature ๋ธ๋์น๋ฅผ ๋ฐ๋ก ์์ฑ$ git checkout -b ryanwork1
feature
๋ธ๋์น์ ์ด๋ฆ์ ๋ฑ๋ก๋ Issue ๊ธฐ๋ฐ์ผ๋ก ์์ฑํ์ฌ๋ธ๋์น๋ช = ์์ ๋ช
์ด ๋๋๋กํ์ฌ ๋ธ๋์น์ ์ ์ฒด์ฑ ๋ถ์ฌ
2.3. ๋ถ์/์ค๊ณ ๋ฐ ๊ฐ๋ฐ
2.4. ๊ฐ๋ฐ ๋ด์ฉ ํ์ธ
$ git status
2.5. ๊ฐ๋ฐ ๋ด์ฉ add, commit, push
$ git add .
$ git commit -m '์ปค๋ฐ๋ด์ฉ'
$ git push origin ryanwork1
- ๋ฐ๋์๊ฐ์ธ ์๊ฒฉ ์ ์ฅ์
(origin)์ ์์ ์ฉfeature
๋ธ๋์น(ryanwork1)์ push
3. Pull Request (์ดํ PR)
3.1. ๊ฐ์ธ ์๊ฒฉ ์ ์ฅ์ feature ๋ธ๋์น
์์ ํ๋ก์ ํธ ์ ์ฅ์ develop ๋ธ๋์น
๋ก Pull Request (Bitbucket์์)
- Pull Request ์, ์ด๋ค Issue์ ๋ํ PR์ธ์ง ์์ฑํด์ผํ๋ค.
- CI/CD ๋๊ตฌ ํ์ฉ
- Merge ๋๋ฉด
feature
๋ธ๋์น๋ฅผ close ํ๋๋ก ์ฒดํฌ
4. PR Review
4.1. ๊ด๋ฆฌ์๋ ์ฝ๋ ๋ฆฌ๋ทฐ ํ ํ๋ก์ ํธ ์ ์ฅ์
์ develop
๋ธ๋์น๋ก Merge ํน์ Decline (Bitbucket์์)
4.2. Merge ๋ ์ดํ์ feature
๋ธ๋์น๊ฐ close ๋๋๋ก ์ค์ ์ํ๋ค๋ฉด ์ง์ ๋ธ๋์น ์ญ์
$ git branch -d ryanwork1
5. Issue ๋ฐ์
5.1. Bitbucket์์ Issue close ํน์ PR๊ณผ ์ฐ๋ํ์ฌ ์๋์ผ๋ก Issue close.(Bitbucket์์๋ PR๊ณผ ์ฐ๋๋ถ๊ฐ)
5.2. Trello ์ด์ ์นด๋ ์ด๋
6. ์ ์ฅ์ Update
6.1. ํ์๋ค์ ์ํด ์
๋ฐ์ดํธ๋ ํ๋ก์ ํธ ์ ์ฅ์
์ develop
๋ธ๋์น๋ก ๋ถํฐ ๊ฐ์ธ local ์ ์ฅ์
์ develop
๋ธ๋์น ๋๊ธฐํ.
- ์ฐ์ HEAD๊ฐ
develop
๋ธ๋์น์ ์์นํ๋๋ก$ git checkout develop
$ git fetch ํ๋ก์ ํธ์ ์ฅ์(๋ณ๋ช ) develop
$ git branch -a
๋ก ๋ธ๋์น ํ์ธ$ git merge ํ๋ก์ ํธ์ ์ฅ์(๋ณ๋ช )/develop
- ๋๋ merge ๋์
$ git rebase ํ๋ก์ ํธ์ ์ฅ์(๋ณ๋ช )/develop
- ๋๋ Pull๋ก ํ๋ฒ์ ๋๊ธฐํ
$ git pull ํ๋ก์ ํธ์ ์ฅ์(๋ณ๋ช ) develop
6.2. ์ดํ ์์
์ ๋ค์ 1.1.
๋ถํฐ ์งํ
(๋ฒ์ธ) Clone ๋ฐ์ ํ๋ก์ ํธ Eclipes์์ ์ด๊ธฐ
์ด ๊ธ ์ฐธ๊ณ .