๐ git diff branch1..branch2
์๋ ํ์ธ์, ์ด๋ฒ ์๊ฐ์๋ git diff ๋ช ๋ น์ด๋ฅผ ํตํด ๋ ๋ธ๋์น ์ฌ์ด์์ ์ฐจ์ด์ ์ ํ์ธํด๋ณด๊ฒ ์ต๋๋ค.
๐ก ๊ฐ์
๋ณดํต ์ฝ๋ ์ด๋ ฅ์ ๊ด๋ฆฌํ๋ ๋๊ตฌ๋ก git, github(gitlab, bitbucket) ๋ฑ์ ์ฌ์ฉ์ ํ๋๋ฐ์,
git-flow ์ ๋ต์ ์ฌ์ฉํ์ฌ main, develop, feature, hotfix ๋ฑ์ ๋ธ๋์น๋ฅผ ๊ด๋ฆฌํ๋ค ๋ณด๋ฉด ๋ธ๋์น ๊ฐ ์ฝ๋๊ฐ ๋๊ธฐํ๊ฐ ๋์ง ์์ ๊ฒฝ์ฐ๊ฐ ์กด์ฌํฉ๋๋ค.
๋ณดํต git-flow ์ ๋ต์์ ์ฌ์ฉ๋๋ ๋ธ๋์น์ ๋ํ ์ ๋ต์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค
- main(master) : ์ค์ ์์ฉ ํ๊ฒฝ์ ๋ฐ์ํ๋ ๋ธ๋์น
- develop : ๋ค์ ์ถ์ ๋ฒ์ ์ ๋ํด ๊ฐ๋ฐํ๋ ๋ธ๋์น
- feature : ๊ธฐ๋ฅ์ ๊ฐ๋ฐํ ๋ ์ฌ์ฉํ๋ ๋ธ๋์น
- hotfix : ์์ฉ ํ๊ฒฝ์์ ๋ฐ์ํ ๋ฒ๊ทธ๋ฅผ ์์ ํ ๋ ์ฌ์ฉํ๋ ๋ธ๋์น
ํ์ฌ๋ง๋ค ์กฐ๊ธ์ฉ ์ฐจ์ด์ ์ ์์ ์ ์์ผ๋, ๋ณดํต์ ์์ ๋น์ทํ ๋งฅ๋ฝ์ผ๋ก ๊ฐ ๋ธ๋์น๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ git-flow ์ ๋ต์ ๋ฐ๋ฅด๋ฉด ์ผ๋ฐ์ ์ผ๋ก ๊ฐ๋ฐ์ ์งํํ ํ ์์ฉ ํ๊ฒฝ์ ๋ฐ์ํ๊ธฐ ๊น์ง์ ๋ธ๋์น ๊ด๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
(์ด๋ฌํ ๊ณผ์ ๋ ํ์ฌ๋ง๋ค ๋ค๋ฅผ ์ ์์ต๋๋ค. ^^)
- feature ๋ธ๋์น์์ ๊ธฐ๋ฅ์ ๊ฐ๋ฐํ ํ develop ๋ธ๋์น๋ก PR & Merge
- develop ๋ธ๋์น -> main(master) ๋ธ๋์น๋ก PR & Merge
- hotfix -> main ๋ธ๋์น๋ก PR & Merge(๊ธด๊ธํ๊ฒ ๋ฒ๊ทธ๋ฅผ ์์ ํ ๊ฒฝ์ฐ)
์์ ๊ฐ์ ๊ณผ์ ์์ ์ฌ๋ฌ ๋ช ์ด ํ์ ์ ์งํํ๋ค ๋ณด๋ฉด develop ๋ธ๋์น์๋ ๋ฐ์ํ์ผ๋ main์๋ ๋ฐ์๋์ง ์์ ๊ฒฝ์ฐ๋ ์กด์ฌํ ์ ์๊ณ , hotfix -> main ์ผ๋ก ๋ฐ์ํ์ผ๋ main -> develop ๋ธ๋์น๋ก ๋ฐ์๋์ง ์๋ ๊ฒฝ์ฐ๋ ์์ต๋๋ค.
๋ฐ๋ผ์ git diff ๋ช ๋ น์ด๋ฅผ ํตํด ๋ ๋ธ๋์น ์ฌ์ด์์ ์ฐจ์ด์ ์ ํ์ธํด๋ณด๊ฒ ์ต๋๋ค.
๐ก git diff ๋ช ๋ น์ด ์ฌ์ฉํ๊ธฐ
ํ์ฌ ์ปค๋ฐ ๋ก๊ทธ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
git log --branches --decorate --graph --oneline
๋ธ๋์น์ ๋ธ๋์น ์ฌ์ด์ ์ฐจ์ด์ ์ ํ์ธํ๋ diff ๋ช ๋ น์ด๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
// branch 2๋ฅผ ๊ธฐ์ค์ผ๋ก branch1์๋ ์๊ณ , branch 2์๋ง ์กด์ฌํ๋ ๋ด์ญ
git diff branch1..branch2
์๋ ์ฝ๋๋ ์์ ๋ก ์ดํด๋ณผ main, develop, feature/12 ๋ธ๋์น์ ๊ฐ๊ฐ์ ์ฝ๋์ ๋๋ค.
main ๋ธ๋์น
public class MainBranch {
public static void main(String[] args) {
System.out.println("Common main branch");
}
}
develop ๋ธ๋์น
public class DevelopBranch {
public static void main(String[] args) {
System.out.println("Develop Branch");
}
}
public class MainBranch {
public static void main(String[] args) {
System.out.println("-------------------");
System.out.println("Common main branch");
System.out.println("This is develop branch");
}
}
feature/12 ๋ธ๋์น
public class FeatureBranch {
public static void main(String[] args) {
System.out.println("Feature Branch");
}
}
public class MainBranch {
public static void main(String[] args) {
System.out.println("-------------------");
System.out.println("Common main branch");
System.out.println("This is feature branch");
}
}
git diff main..develop
DevelopBranch ํด๋์ค์ ๊ฒฝ์ฐ main ๋ธ๋์น์๋ ์กด์ฌํ์ง ์๊ธฐ ๋๋ฌธ์ ์ ์ฒด๊ฐ ์ด๋ก์(+)์ผ๋ก ๋ณด์ด๊ณ , MainBranch์ ๊ฒฝ์ฐ ์ผ๋ถ ์ถ๊ฐ๋ ๋ถ๋ถ๋ง ์ด๋ก์(+)์ผ๋ก ๋ณด์ด๊ฒ ๋ฉ๋๋ค.
git diff develop..main
develop..main ์ ๊ฒฝ์ฐ main..develop ์๋ ๋ฐ๋๋ก main ๋ธ๋์น์ ์กด์ฌํ์ง ์๋ ์ฝ๋๋ ๋นจ๊ฐ์(-)์ผ๋ก ๋ํ๋๊ฒ ๋ฉ๋๋ค.
git diff develop..feature/12
develop..feature/12 ์ ๊ฒฝ์ฐ feature/12 ๋ธ๋์น๋ฅผ ๊ธฐ์ค์ผ๋ก DevelopBranch ํด๋์ค๋ ์กด์ฌํ์ง ์์ผ๋ฏ๋ก ๋นจ๊ฐ์(-) ์ผ๋ก ๋ํ๋๊ณ , FeatureBranch ํด๋์ค์ ๊ฒฝ์ฐ ์กด์ฌํ๋ฏ๋ก ์ด๋ก์(+)์ผ๋ก ๋ํ๋๋ฉฐ, MainBranch์์๋ ๋์ผํ๊ฒ ๋ํ๋๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
๐ก ๋ง๋ฌด๋ฆฌ
์ด์์ผ๋ก git diff ๋ช ๋ น์ด์ ๋ํด ๊ฐ๋ตํ ์ดํด๋ณด์์ต๋๋ค.
์ ์์ ๋ ๋งค์ฐ ๊ฐ๋จํ๊ฒ ์์ฑ๋ ์ฝ๋์ด๊ธฐ ๋๋ฌธ์ ๊ตณ์ด ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ง ์๋๋ผ๋ ํ ๋์ ์ฐจ์ด์ ์ ํ์ ํ ์ ์์ต๋๋ค.
ํ์ง๋ง ์ค๋ฌด์์ ์์ฑ๋๋ ์ฝ๋์ ๊ฒฝ์ฐ ์๋ฐฑ~์์ฒ ๋ผ์ธ์ ์ด๋ฅด๊ธฐ์ ์ฐจ์ด์ ์ ๋์ผ๋ก ํ์ธํ๊ธฐ์๋ ํ๋ค ์ ์์ต๋๋ค.
์ด ๋ ์ ๋ช ๋ น์ด๋ฅผ ํตํด ๋ ๋ธ๋์น ์ฌ์ด์์ ์ฐจ์ด์ ์ ๋ณด๋ค ์ฝ๊ฒ ํ์ ํ ์ ์์ ๋ฏ ํฉ๋๋ค.
๋๊ธ