키보드워리어

【Git】협업을 위한 깃 - 2 본문

개발 관련/Git

【Git】협업을 위한 깃 - 2

꽉 쥔 주먹속에 안경닦이 2022. 8. 13. 11:53
728x90

안녕하세요 【키보드 워리어】
블로그 방문자 여러분, 안경닦이입니다.


이전 시간에 git에 대해 배울 때 작업한 내용을 리뷰하고 최종적으로 프로젝트에 반영하는 법까지 배우기로 하였는데요.

 

오늘 그것에 대해 살펴보려고 합니다.


1. 누가 이 작업할 것인지 정한다. (할당)

 

2. 각자 맡은 것을 작업한다. (브렌치)

 

3. 각자 작업을 프로젝트에 합칠 수 있게 공유한다. (병합)

 

4. 작업한 내용을 리뷰하고 최종적으로 프로젝트에 반영한다. (피드백)


 

 

먼저 협업을 한다는 가정하에 우리가 배워야 할 내용들을 개념들이 많은데요~

 

내가 작업한 내용들을 푸시하기 이전에, 먼저 반영해달라고 하는 요청 pr에 대해 알아보겠습니다.

 

|  pr이란?

pr은 Pull Request에 약자로, 내 브렌치를 원격 repo에 병합하기 이전에,

반영해달라고 깃허브를 통해 요청하는 작업을 의미합니다.

 

 

pr을 자주 하게 되면, 팀원들과 작업 소통이 원활하게 되고 개선해 나아가는 과정을 밟게 됩니다.

결과적으로 작업의 완성도도 올라갈 수 있습니다.

 

 

pr요청을 하고 나서 팀장 정도 되는 담당자가 병합 확인을 누르면 원격 rpo에는 커밋이 또 생성이 됩니다.

그렇다면 그것을 나의 로컬 repo에도 패치해야겠죠?

 

※주의할 점은, pr이 완료되기 전까진 pr요청을 한 로컬 브랜치는 삭제되지 않는 점입니다.

pr이 반영되기 전 추가 커밋을 해야하는 경우에, 로컬 브랜치에서 다시 커밋한 후에

원격 브렌치에 푸시해서 변경된 내용을 반영한 후에

다시 pr하시면 됩니다.

 

|  Fork

그리고 다른 사람의 오픈소스에도 내가 fork 기능을 사용하게 되면 다른 repo에도 pr 할 수 있게 됩니다. fork를 이해하기 위해서, 음식 먹을 때 음식을 포크를 집어 가져오는 행위를 생각해보세요.

 

fork는 나의 repo에 원본으로 된 오픈소스 코드를 복사해서 새로운 독립적인 소프트웨어로 개발하는 것을 의미합니다.

 

오픈소스에 fork 해서 작업한 내역들은 "내 코드가 반영이 가능할까요?" 하고 pr 해볼 수 있습니다. 물론 기준에 맞지 않는다면 거부당할 수도 있구요. 

 

fork 기능이 있는 github repo

 

pr이 승인이 되면, 나도 이 오픈소스에 기여한 사람이 될 수 있습니다!

 

오픈소스에 기여하게 되면 이렇게 repo에 오른쪽 화면 탭에서 contributors 항목에서 자신을 나타낼 수 있습니다.

기여를 많이 하면 할수록, 실력이 많이 늘어나겠죠?

 

 

왜 개발자들은 자신의 명함이나 포트폴리오에 github 주소를 넣을까요? 그건 나를 잘 알려주는 하나의 정보 역할을 하기 때문입니다. 깃헙을 잘 이용하면 이렇게 많은 부분에서 도움을 받게 됩니다.

 

|  Amend

그리고 우리는 사람이기 때문에, 때론 내 작업에서 커밋 실수를 할 수 도 있지 않겠습니까?

 

최신 커밋을 고쳐야 할 때, 어떻게 해야 할까요? amend (개정하다) 기능은 커밋을 실수했을 때 되돌리는 방법 중에 하나인데요.

 

※ sourcetree로 작업하실 때에는 한글 기능에서 오류가 나서, 영어로

작업하시는 게 더 편하실 겁니다.

커밋을 고칠 때는 나만의 브렌치에서만 적용시켜야 합니다.

다른 사람과 협업하고 있다고 한다면, 다른 사람의 커밋을 망칠 수도 있기 때문입니다!!

 

 

소스 트리 워크스페이스에서 파일 상태 > 커밋 옵션 기능을 클릭하면 마지막 커밋 수정이라고 되어있는 게 amend입니다.

 

이 기능을 사용하면 마지막 커밋하기 전 상태로 돌아가 내가 스테이징 시키지 못한 파일을 다시 add 해서 커밋할 수 있게 해 줍니다.

 

|  Force push

force push라는 기능은 강제로 푸시하게 해주는 기능을 알려주는데요. 푸시 후에 푸시한 커밋을 되돌려 줍니다.

강제로 커밋을 덮어 씌운다고 생각하면 됩니다.

 

Mac > Sourcetree >  Preferences > Advaced > Allow force push를 클릭해주면 가능해집니다.

 

 

|  Revert, Reset

 

커밋이 변경되었음을 다른 사람과 협업할 때 알려주는 것으로 Revert가 있습니다.

 

협업을 할 때는 어떤 내용으로 되돌렸는지 기록하는 것도 중요하니까요.

Amend와 다른 점은 어떤 걸 되돌렸는지 알 수 있고, 최신의 것이 아닌 예전 커밋으로 돌아갈 수 있다고 할 수 있겠습니다.

 

실행 방법은 되돌리고 싶은 커밋에서 오른쪽 버튼을 클릭 후 커밋 되돌리기를 클릭하면 돼요.

변경한 커밋을 원격 repo에 반영하고 싶으면 푸시하면 되고요.

 

Reset은 옛날 작업으로 아예 초기화시킬 때 사용하는 것으로 리셋을 할 때 내가 내가 이전에 어떤 커밋을 했는지 알 수 없게 될 수도 있습니다!! 이건 soft, mixed, hard 세 가지로 구분할 수 있습니다.

 

  • Soft > 커밋들을 되돌리고 변경 작업을 보존해서 파일 변경사항을 보여준다. 변경사항은 add되 지 않은 상태로 보인다.
  • Mixed > 커밋들을 되돌리고 변경 작업을 보존해서 파일 변경사항을 보여준다. 변경사항은 add 된 상태로 보인다.
  • Hard > 커밋들을 되돌리고 변경 작업까지 모두 없애버린다. 작업 내역을 복원할 수 없다.

 

|  Stash

숨겨두기 기능인 Stash는, 프로젝트의 변경사항을 임시적으로 보관해둘 때 사용합니다.

 

예를 들어, 다른 브랜치로 체크아웃하는 경우에,

현재 브렌치의 변경사항이 사라지게 되는데 이전 작업 중이라서 커밋하지는 않고 변경사항만 보관해두고 싶을 수도 있겠죠?

이때 커밋 대신 stash를 사용합니다.

 

 

치워두기란 카테고리에  [On 브랜치명]양식으로 작성하며 이는 저장했을 때 메시지로 적용 가능합니다.

만약 스태시가 활성화가 안되었으면 이는 바뀐 커밋이 없다는 걸 의미합니다. 적용한 게 없으니 저장할 것도 없지요.

 

 

 

 

 참고하시면 좋은 글 

 

2022.08.04 - [개발 관련/Git] - 【Git】협업하기 위한 깃

 

【Git】협업하기 위한 깃

안녕하세요 【키보드 워리어】 블로그 방문자 여러분, 안경닦이입니다. 오늘은 Git 컨텐츠로 돌아왔습니다. 깃의 목적 깃을 배우는 중요한 이유 중 하나는 프로그래밍 언어를 팀으로 협업하여

keyboardwarrior.tistory.com

 

2022.07.31 - [개발 관련/Git] - 【Git】소스트리 버전관리

 

【Git】소스트리 버전관리

안녕하세요 【키보드 워리어】 블로그 방문자 여러분, 안경닦이입니다. 오늘은 깃, 소스트리 (Source Tree) 에 대해 알아보겠습니다. 소스트리 소스 트리는 깃을 관리하기 편하게 유저 인터페이스

keyboardwarrior.tistory.com

 

2022.07.24 - [개발 관련/Git] - 【Git】 Git, Github? 차이가 뭔가요??

 

【Git】 Git, Github? 차이가 뭔가요??

안녕하세요 [키보드 워리어] 블로그 방문자 여러분, 안경닦이입니다. 오늘은 깃과 깃허브에 개념에 대해 간단히 알아보겠습니다. 깃이란? 깃이란 자신이 진행하고 있는 프로젝트를 하나의 파일

keyboardwarrior.tistory.com

 

2022.07.14 - [개발 관련/Git] - 【Git】기초 준비 과정

 

【Git】기초 준비 과정

안녕하세요 [키보드 워리어] 블로그 방문자 여러분, 안경닦이입니다. 오늘은 Git 기초 준비과정에 대해 알아보겠습니다. # Git 준비하기 깃을 설치하기 위해 homebrew라는 프로그램을 설치합니다. hom

keyboardwarrior.tistory.com

 

 

728x90

'개발 관련 > Git' 카테고리의 다른 글

[IntelliJ] 깃허브 적용  (0) 2023.04.20
【Git】협업하기 위한 깃  (0) 2022.08.04
【Git】소스트리 버전관리  (0) 2022.07.31
【Git】 Git, Github? 차이가 뭔가요??  (0) 2022.07.24
【Git】기초 준비 과정  (0) 2022.07.14