Git 협업방법 정리

무심코·2023년 3월 8일
0
post-thumbnail

Background

git?

Git은 소프트웨어 개발에서 소스 코드를 효과적으로 관리할 수 있도록 하는 공개 소프트웨어로 프로젝트 폴더 내에서 작업을 기록(commit)하고, 버전 관리를 통해 체계적인 개발이 가능하도록 합니다.

github?

Github는 분산 버전 관리 툴인 Git을 사용하는 프로젝트를 지원하는 웹 호스팅 서비스입니다.

git 사용법

git이 작업을 기록하는 방법은 수학여행 때 학생들이 사진찍는 모습과 비슷합니다.

수학여행을 가면 사진 기사가 카메라를 준비하고, 사진 찍을 아이들을 모으고, 사진을 찍죠, 이처럼 git도 git 도구를 준비하고, 기록할 작업물을 선택하고, 선택한 작업들을 기록하는 흐름으로 작업을 기록합니다.

cd 폴더 경로

> git을 사용하기 원하는 project 폴더 경로로 이동한 후 git 명령어를 실행합니다.

git init

> project를 git의 repository로 만들기 위한 명령어입니다. 사진 찍을 카메라를 준비하는 행위와 동일하죠.

git status

> git init을 적용한 프로젝트 하위 폴더 안에서 변경된 파일 리스트를 확인하는 명령어입니다.

git add 원하는 폴더

> 기록하기 원하는 작업물을 선택하는 명령어입니다.

git status에 올라와 있는 파일중 선택할 수 있고 git add . 명령어를 사용하면 git status 상에 변경되었다고 올라온 모든 파일을 선택하게 됩니다.

> git commit -m “기록할 커밋 메세지”

git add 로 선택한 작업물을 최종적으로 저장하는 명령어입니다. “기록할 커밋 메세지” 안에는 저장할 작업물의 변경사항이나 추가되는 기능들에 대한 메세지를 적습니다. git 컨벤션을 따라 메세지를 적는게 일반적이며 컨벤션은 다음을 참고하시면 됩니다.(팀마다 컨벤션은 다르므로 팀의 컨벤션을 맞춰 사용하시면 됩니다.)

++ git convention

“type(도메인 명) : subject” → e.g. “feat(Shop) : add shop getter method” 

**:: type ::**

- feat : 새로운 기능 추가
- improve : 기존 기능 수정(요구사항이 변경되어 수정된 경우도 new가 아닌 improve로)
- design : UI 변경
- fix : 버그 수정
- docs : 문서 수정(ex. READ.md 수정)
- style : 코드 포맷팅,
- refactor : 코드 리펙토링
- test : 테스트 코드

**:: subject ::**

→ 제목은 50자 이하로 작성

→ 한글 사용도 가능

git branch

> project에 존재하는 branch를 확인합니다.

git remote -v

> 로컬과 연결 돼있는 원격저장소(github 저장소) 리스트를 확인합니다.

github 사용법

git에서 저장한 커밋 내용들을 github에 올려 저장합니다.

github에서 프로젝트 내려받는 법

git remote add origin 원격 저장소 주소

> 원격 저장소를 관리하는 명령어입니다.
git remote -v 명령어를 통해서 현재 원 격 저장소가 무엇인지 확인도 가능합니다.

git clone 저장소 주소

> github의 repository를 서버의 프로젝트를 그대로 내려받는 명령어입니다.

github에 저장한 commit 올리는 법

git push origin branch명

> 지금까지 commit한 내용들을 github에 올리는 명령어입니다. branch는 프로젝트 안에서 여러 branch를 만들어 다양한 기능들을 따로 개발할 수 있게하는 기능인데 가장 기본적인 branch는 main branch로 git push origin main 명령어를 가장 쉽게 사용할 수 있습니다.

github에서 코드 내려받는 법

git pull origin branch명

> git에 올라와 있는 코드를 로컬로 내려받는 명령어입니다.

이때 ‘내 로컬 코드랑 github 코드랑은 다른데 어떤 식으로 코드를 내려받지’라는 궁금증이 생길 수 있습니다. git은 기본적으로 로컬 코드와 github 코드가 다른 부분을 자동으로 합쳐줍니다(merge 해줍니다). 하지만 git이 자동적으로 합쳐주지 못하는 경우도 있습니다. 이 경우에는 합치지 못한 해당 파일에 비교해야 하는 부분을 표시해줍니다. 이를 직접 판단하여 합쳐주면 됩니다.

⭐️ 협업 시 git을 사용하는 흐름 ⭐️

실질적으로 협업 때 git을 사용하는 흐름을 정리해보겠습니다.
Permission denied error가 뜨면 명령어 앞에 sudo 를 붙여 사용합니다.

프로젝트 시작시

  1. github에서 저장소 fork
  2. cd ‘git을 사용하기 원하는 project 폴더 경로’

remote 연결
remote 연결 상태를 두개로 만듭니다.
upstream ← organization 계정의 repo
origin ←fork 한 개인 계정의 repo

  1. git remote add origin 본인_계정_저장소_주소

  1. git remote add upstream 메인_저장소_주소

연결 구조

개발 진행시

  1. git pull upstream branch명

    or

    git checkout -b 원하는_로컬_브랜치_이름 --track upstream/원하는_메인저장소_브랜치

    → 메인 저장소에 올라온 코드와 로컬 코드를 먼저 합치거나 새로운 branch를 생성한다.

  2. 개발 진행

    git add , git commit -m 사용

  3. 기능 개발을 마무리

    → 기능 개발을 마무리하고 git push origin branch명 명령어로 github에 코드를 올린다.

  4. fork한 본인 계정 저장소에 들어가 PR를 보낸다.

head repository : 개인 계정 repo 👉 base repository : Organization 계정 repo

  1. PR을 보낸 저장소로 가 merge한다.

더 다양한 git 관련 자료

https://git-scm.com/book/ko/v2
https://github.com/honux77/practice/wiki/learngit

profile
지나치지 않기 위하여

0개의 댓글