공부/Git(8)
-
[Git] Upstream?
Upstream 기능은 무엇이며 왜 사용하는지를 알기 위해서 Remote Repository와 Local Repository의 개념에 대해서 알아야한다. 부끄럽지만 나는 얼마전까지만해도 이 개념들에 대해서 생각해본적이 없다. 그냥 남들이 하니까 따라 사용했다. Git과 Github이 같은건줄 알았으니까 -0-;; Remote Repository는 Github, Gitlab, Bitbucket과 같은 코드 호스팅 플랫폼의 네트워크 서버에 있는 저장소를 말한다. 그리고 이런 RemoteRepository에 있는 저장소를 git clone 하거나, git init으로 내 컴퓨터 (Local)에 생성한 Repository를 Local Repository라고 한다. 원격 서버에 있는 모든 Repository는 R..
2023.04.14 -
[Git] 이력관리를 위한 Rebase Merging
Rebase merge 는 무엇? Rebase는 Git에서 브랜치의 이력을 다른 브랜치에 적용하는 작업을 말합니다. Rebase는 Merge와 비슷한 작업을 수행하지만, Merge와는 다른 작업 방식을 사용합니다. Rebase Merge는 기본적으로 브랜치의 이력을 단순화하고 정리하는데 사용됨. Rebase Merge를 수행하면 브랜치 이력으로 선형성이 유지되며, Merge Commit이 생성되지 않음. 그림으로 표현하면 다음과 같음 선형성을 유지해서 Git Repo의 이력을 깔끔하고 가독성 좋게 유지할 수 있으므로, 협업에서 유용하다고 한다. 그렇다면 죄다 Rebase Merge로 가독성을 깔끔하게 하면 좋은거 아닌가? 라는 의문이 들어 단점도 찾아보았다. 브랜치 이력이 복잡한 경우, 작업이력이 뒤섞일..
2023.04.14 -
[Git] 2-Way Merge & 3-Way Merge
머지가 머지? Merge에는 여러가지 방법이 있다. 우선 2-way merge 에 대해서 예시를 들어서 설명하겠음. 2-Way Merge flow Main file1 A file2 B file3 C file4 D 다음과 같은 메인 브랜치가 존재한다고 가정하고, 이 Main 브랜치를 기반으로 협업을 위해 브랜치를 몇개 더 생성해서 작업을 한다면 다음 과 같을 것이다. Main 내가 작업한 브랜치 다른 사람이 작업한 브랜치 file1 A A A file2 B B B2 file3 C C2 C3 file4 D D2 D 이 상태에서 나와 협업하는 개발자가 둘다 Merge를 했을때 발생할 결과는? Main 내가 작업한 브랜치 다른 사람이 작업한 브랜치 Merge 예상 결과 file1 A A A A file2 B B..
2023.04.13 -
[Git] CherryPick
Cherry Pick이 뭐지? 좀 더 한국식으로 표현하면, 냉면위에 올라간 겨란만 쏙 빼먹는 행위를 말한다. 조금 와전되긴했지만 내가 필요한 것들만 고르는 행위를 말하는데, 개발 용어로써의 체리픽은 다음과 같다. 더보기 체리픽(cherry-pick)은 소스 코드에서 특정 변경 사항만을 선택적으로 가져와서 다른 브랜치에 적용하는 기능을 말합니다. 보통 소스 코드를 버전 관리 시스템(Git, SVN 등)에 저장하면서 여러 개발자들이 동시에 개발을 진행하게 되는데, 이 때 다른 개발자가 작성한 변경 사항을 현재 작업 중인 브랜치로 가져오기 위해 체리픽 기능을 사용합니다. 체리픽은 주로 버그 수정이나 새로운 기능 개발 등의 작업에서 사용됩니다. 예를 들어, 개발자 A가 작업한 변경 사항이 브랜치 X에 반영되어야..
2023.04.13 -
[Git] Stash?
실제 업무상황에는 한번에 하나의 일만 하지는 못한다고 한다. ex 지난 번에 개발했던 기능의 버그 급하게 들어온 핫픽스 진행하고 싶은 기능의 구현 이런 상황에선 기능 개발하다가 긴급 핫픽스 수정을 위해 반쪽짜리 커밋을 하고 브랜치를 바꿔서 수정하는 것은 매우 불편하고 협업하는 사람들에게 혼동을 줄 수 있다. 이를위해 만들어진 기능 Stash 커밋을 하지 않고 저장하는 임시저장과 같은 기능. 의미 없는 커밋 메시지를 줄일 수 있다. 예시 1. 현재 상황은 stash라는 프로젝트의 profileFix 브랜치에서 profile.txt의 이메일 작성과 gitID 입력하는 작업중이였다. 2. email 작성을 끝내고 gitID 입력 작업을 하려는 순간 hasTypo.txt 파일에서 우선순위가 높은 이슈가 발생했다..
2023.04.12 -
[Git] 브랜치 전략
깃 브랜치 전략 크게 5가지의 브랜치를 만들어서 개발을 하는것이 일반적이라고 한다. 더보기 Main(master) Develop Release Feature Hotfix Main 무조건 안정적이고 커밋이 일어나지 않음. 최종본이라고 보면 된다. Develop 개발 브랜치 개발자가 개발을 할 때 pull을 받아야 하는 브랜치 개발을 진행하고 있는 브랜치이기 때문에, 여러 버그가 존재 가능 feature 브랜치를 따오는 곳 Release 배포 브랜치 기능 개발을 하는 브랜치가 아니라 버그 수정만 이루어지는 곳 버그 수정후에는 dev와 main 브랜치에 merge Hotfix 급하게 수정되어야 하는 버그/이슈를 해결하는 브랜치 돌려막기라고 보면 이해하기 쉽다. Feature 기능 브랜치, 개발을 하는데 사용되..
2023.04.12