본문 바로가기
Git

Git Collaboration(3)

by GalaxyStar 2024. 2. 21.

원격 브랜치와 FETCH

지역저장소의 master 브랜치는 여전히 934df9b라고 하는  브랜치를 가리키고 있습니다.

하지만 이번에는 희안하게 origin master master 브랜치보다 한단계 앞서 있어요.

 

Git status

git-status

"너의 브랜치가 origin master보다 1개의 commit만큼 뒤쳐져 있다. 그러니 git pull 해라." 라고 적혀있습니다.

 

Git pull 하셔도 되고 origin master 여러분의 지역저장소의 master branch merge 하셔도 됩니다.

 

Git merge origin/master

git-merge

Git pull = git fetch; git merge origin/master

Git fetch + get merge origin/master: Git pull 한것과 똑같은 상태가 되는 것을  수가 있습니다.

Git fetch: 원격저장소만 업데이트를 때린다.

Git fetch 할때마다 .git/FETCH_HEAD라는 파일을 생성한다.

 

.git/FETCH_HEAD안에 bd7369a라를 commit id Git log상의 origin master 브랜치의 "work 3a" 버전의 commit id 동일함.(원격저장소에 가장 최근에 우리가 merge 내용이 적혀있음.)

 

Git merge: origin 원격브랜치 mater 내용을 지역저장소의 master 땡겨옴.

 

Git fetch; git merge FETCH_HEAD

 

Code Review

지금까지 우리는 git 이용해서 사람과 사람의 성취를 어떻게 merge하고 그것을 통해서 성취를 어떻게 만들어 내는가를 충분히 살펴보았습니다.

 

이번에는 코드리뷰 도구인 Gerrit에 대해 알아보도록 하겠습니다.

 

코드리뷰 도구, Gerrit

code-review-gerrit
code-review-gerrit

구글에서 안드로이드 프로젝트를 진행하는 과정에서 필요해서 만든 도구 입니다.

개발자들의 코드 품질을 상호 검증하는 도구인데 일종의 투표소 입니다.

우선 작업한 버전은 서버로 push하면 바로 원격저장소로 올라가는게 아니고 투표소로 가요.

 

code-review-gerrit
code-review-gerrit

그럼 동료들에게 새로운 버전이 push 되었다는것이 전파되고 동료들은 투표를 통해서 버전이 괜찮은지 또는 어떤 개선점이 있는지 이런 것들을 서로 의논하면서 투표가 끝나게 되면 반영되거나 거절되거나 유보되거나 이런것들이 자동화 되는 것입니다.

비단 코드뿐 아니라 문서 작업을 할때도 팀원들끼리 크로스 체크 한다면 정말 좋겠죠.

code-review
code-review

Github gitlab 같은 git hosting 서비스들은 협업을 위한 다양한 도구들을 제공한다.

Github 경우 issue tracker 제공한다.

 

"이메일이나 게시판과 같은것으로 버그가 있다어떤 개선사항을 누가 해줬으면 좋겠다." 이런 커뮤니케이션을 하는것보다 훨씬 체계적으로 업무를 진행할 있다.

code-review
code-review

insights 같은 통계 기능을 이용하면 업무가 얼마나 활발하게 일어나고 있는지도 한눈에 파악할 있습니다.

 

어떻게 우리팀에 git 도입할 것인가?

여러분이 버전 관리와 같은 도구를 팀에 도입하려고 하면 엄청난 반발을 만나게 되실거에요.

파일의 이름을 더럽히는 모습을 보여준 이후에 파일의 이름을 더럽히지 않아도 된다는것을 보여주고 각각의 버전 간의 차이점을 비교할 있고 그리고 체크아웃을 통해서 언제든지 과거로 또는 현재로 돌아올 있다라는 것을 보여주면 좋을거 같아요.

 

Reset & Revert

시간의 순서에 따라서 변화를 기록한다는 점에서 git 역사적 입니다.

역사를 기록하다보면 지우고 싶거나 되돌리고 싶은 경우가 있겠죠.

 

이때 다른 사람에게 공개하기 전의 역사라면 마음대로 지우고 다시 쓰면 됩니다. 바로 이때 사용하는 도구가 reset 입니다.

 

하지만 이미 공개된 역사를 지우는 것은 문제가 됩니다. 거래를 기록하는 회계에서는 이런 행위가 범죄가 되요.

잘못된 버전을 지우는 것이 아니라 잘못된 버전을 취소한 버전을 새롭게 추가해서 결과적으로 지운 효과를 내면서도 기록을 훼손하지 않는 기가막힌 기능이 되돌린다는 의미의 revert 입니다.

 

Reset revert 모두가 이미 기록된 역사를 다룬다는 점에서 매우 위험하고 복잡하고 까다로워요.

도구들은 지운다, 되돌린다는 기본적인 의미 외에도 다양한 용도로 전용될 있는 맥가이버 칼과 같은 도구 입니다.

'Git' 카테고리의 다른 글

Reset & Revert  (0) 2024.02.21
Git Collaboration(2)  (0) 2024.02.21
Git Collaboration(1)  (0) 2024.02.20
Git branch & conflict(7)  (0) 2024.02.19
Git branch & conflict(6)  (0) 2024.02.19