IT/Git

Git에서 사용하는 용어 정리 및 IntelliJ에서 사용법

binary? 2024. 6. 26. 15:31
728x90

Git에서 사용하는 용어 정리 및 IntelliJ에서 사용법

이번에 친구와 프로젝트를 협업하면서 Github 레파지토리를 공유해야 하는데요. svn만 써왔다 보니까 용어도 어려운 것이 많고 개념도 잘 몰라서 한 번에 정리를 해보려고 합니다.

용어 정리를 쭈욱 해보고, SVN과 비교하고, IntelliJ에서 사용하는 방법도 정리해 보겠습니다.

클론(Clone)

  • 클론(clone): 원격 저장소에 있는 프로젝트의 전체 복사본을 로컬 컴퓨터로 복제하는 것.
  • 이를 통해 프로젝트의 최신 상태를 로컬에서 사용할 수 있으며, 이후 로컬에서 작업한 변경사항을 원격 저장소에 푸시(push) 하거나 원격 저장소의 변경사항을 가져오기(pull) 할 수 있습니다.

포크(Fork)

  • 프로젝트 복사 및 수정: 원본 저장소를 직접 수정할 권한이 없는 경우, 저장소를 포크 하여 자신의 계정으로 복사한 후 수정할 수 있습니다.
  • 기여: 오픈 소스 프로젝트에 기여하고 싶을 때, 먼저 프로젝트를 포크 한 후, 변경 사항을 자신의 포크 된 저장소에 커밋 합니다. 그런 다음 원본 저장소로 변경 사항을 병합하기 위해 풀 리퀘스트(Pull Request)를 생성할 수 있습니다

포크 사용

  • 오픈 소스 프로젝트에 기여하는 경우
  • 원본 저장소에 대한 쓰기 권한이 없는 경우
  • 중앙 저장소의 안정성을 유지하고 싶은 경우

클론 사용

  • 소규모 팀 내부 협업
  • 팀원 모두가 원본 저장소에 대한 쓰기 권한이 있는 경우
  • 직접적인 협업과 빠른 동기화가 필요한 경우

저는 포크와 클론이 비슷한 개념인 줄 알고 아무거나 해도 되는 줄 알았는데 다르네요.

친구와 협업하여 함께 개발할 때는 클론을 사용하는 것이 더 적절해 보입니다.

브랜치(Branch)

  • 브랜치는 Git 저장소 내에서 서로 다른 작업 흐름을 분리하는 방법입니다. 각 브랜치는 저장소의 특정 시점에서 독립적으로 작업을 진행할 수 있도록 해줍니다. 브랜치를 사용하면 새로운 기능을 개발하거나 버그를 수정할 때, 다른 작업에 영향을 주지 않고 안전하게 작업할 수 있습니다.

기본 브랜치:

  • main (또는 master): 보통 기본 브랜치로, 항상 배포 가능한 상태의 코드를 유지합니다.

기능 브랜치:

  • feature 브랜치: 새로운 기능을 개발하기 위해 생성하는 브랜치

버그 수정 브랜치:

  • bugfix 브랜치: 버그를 수정하기 위해 생성하는 브랜치

릴리스 브랜치:

  • release 브랜치: 다음 릴리스를 준비하기 위해 생성하는 브랜치

핫픽스 브랜치:

  • hotfix 브랜치: 배포된 버전에 긴급한 수정을 적용하기 위해 생성하는 브랜치

브랜치 개념 정리

  • 위의 브랜치 종류가 많지만 프로젝트마다 개발자들 성향에 따라 다를 거 같습니다.
  • 간단하게 생각해서 브랜치는 기존 레파지토리를 복사하여 새로운 레파지토리를 생성하는 작업이고, 예를 들어 운영서버, 테스트서버, 개발서버 분리하여 개발하기 위해서 하는 작업인 듯
  • 친구와 두 명이서 협업하는 소규모 프로젝트에서는 'masetr'브랜치, '진수'브랜치, '친구'브랜치 3개만 있어도 무방한 것으로 판단됩니다.

풀리퀘스트(Pull Request)

  • 풀 리퀘스트는 GitHub에서 팀원이 작업한 내용을 검토하고 병합하기 위해 사용하는 중요한 기능입니다. 풀 리퀘스트를 통해 코드 변경 사항을 팀원들과 공유하고, 코드 리뷰를 받고, 최종적으로 원본 브랜치에 병합할 수 있습니다.

풀리퀘스트 개념 정리

  • 여러 개발자가 같은 파일을 수정하여 commit 하면 충돌이 발생할 수 있는데 이걸 방지하기 위해 Merge 하는 개념인 듯. + 코드 리뷰

Git vs SVN

  • Git을 처음 해보니 용어가 생소했지만 SVN과 크게 다를 게 없네요.
개념
Git 용어
SVN 용어
저장소 복제
Clone
Checkout
변경 사항 전송
Push
Commit
변경 사항 가져오기
Pull
Update
작업 복사본
Branch
Branch
변경 사항 병합 요청
Pull Request (PR)
Merge? Meger랑 비슷한 역할이긴 하지만, 약간의 차이가 있는 듯

1. Intellij 툴에서 프로젝트 클론하기

1-1. IntelliJ 툴 사용 (첫 번째 방법)

  • IntelliJ 상단 메뉴에서 'Get from Version Control'을 클릭

 

 

  • 깃허브 프로젝트 레파지토리 URL을 복사

 

  • 복사한 URL을 붙여놓고 Clone을 클릭하면 끝!

 

 

 

1-2. IntelliJ 터미널에서 명령어 입력 (두 번째 방법)

2. Intellij 툴에서 프로젝트 브랜치 생성하기

2-1 IntelliJ 툴 사용 (첫 번째 방법)

  • IntelliJ 상단 메뉴에서 Git - Branches 클릭
    • New Branch 클릭

    • 브랜치명 정하고 Create 클릭

    • 상단에 jinsu를 클릭해 보면 기존에 존재한 master와 방금 생성한 jinsu 브랜치 2개가 있다. 현재는 상단에 표시된 'jinsu' 브랜치가 활성화되어 있음

    • 다른 브랜치를 활성화하려면 브랜치 선택 후 Checkout 클릭하면 됨. 그럼 상단에 그 브랜치가 표시됨

 

2-1 IntelliJ 터미널 사용 (두 번째 방법)

  • git checkout -b '브랜치명'
  • ex) git checkout -b second_jinsu

 

  • second_jinsu 브랜치가 활성화되어 있다. 매우 간단하네.

 

3. Intellij 툴에서 프로젝트 커밋 & 푸시하기

3-1 IntelliJ 툴 사용 (첫 번째 방법)

  • 좌측에 commit 메뉴에서 커밋 할 파일 체크하고 메시지 넣고 commit and push

3-2 IntelliJ 터미널 사용 (두 번째 방법)

  • git add .
  • git commit -m "Add new feature"
  • git push origin jinsu

4. Github에서 풀리퀘스트하기

  • 깃허브 접속해서 아래처럼 생성하면 되는 듯

  • 브랜치 선택

  • 커밋 내용 확인하고 Create pull request 클릭

  • 풀리퀘스트에 대한 제목과 설명 적고 Create pull request 클릭

  • 팀장? 이 커밋 내용 확인하고 문제없으면 Merge pull Request 하면 끝
  • 그럼 master 브랜치에 반영

  • 저는 현재 권한이 다 있어서 그런지? 풀리퀘스트를 요청하지 않아도 푸시 하면 리퀘스트가 자동으로 생김
  • 깃허브 접속해 보면 커밋 & 푸시 작업으로 인해 Compare & pull Request가 생김

5. 끝 ..

  • git 용어와 IntelliJ에서 사용하는 방법을 알아보았습니다.
  • 협업할 때 요 정도만 알아도 될 듯?
  • A 개발자가 풀리퀘스트로 merge가 완료되면 B 개발자가 pull 받으면 될 듯.
  • git 알고 보니 svn과 크게 다를 게 없다.. 그런데 진입장벽이 svn보다 조금 높다고 생각한다..
728x90