IntelliJ에서 Git 사용하는 방법

IntelliJ에서 Git 사용법

새로운 Git 저장소에 첫 소스 올리기

신규 프로젝트 만들고 상단 VCS > Enable Version Control Integration… > Git 선택 > OK > 좌측 Git 메뉴 > Unversioned Files 우클릭 > Add to VCS > Changes 목록 체크 > Commit Message 작성 > Commit > 상단 Git > push > Define remote > 아래와 같이 입력 후 push

Name origin
URL https://Git주소

Git 프로젝트 가져오기

File > New > Project from Version Control… > Get from Version Control >
또는
Git > Clone… > Get from Version Control >

URL https://Git주소
Directory IdeaProjects경로\프로젝트명

위와 같이 Git URL 입력하고 Clone > New Window 하면 Clone 완료됩니다.

Git Remote branch 내려받기

좌측 하단 Git > Log > Remote > origin > branch명 우클릭 > Checkout
해당 branch와 같은 이름의 Local branch가 생성되며, 최신 소스로 내려받아집니다.

Git branch 복제

branch명 우클릭 > New branch from ‘branch명’ > New branch name : 신규 branch명 입력 > Create

Git Fetch, Pull

상단 Git 메뉴 > Fetch > 좌측 하단 Git > Log > ↙ 아이콘이 생겨있는 Git Local branch 우클릭 > Update

Git Commit, Push

좌측 Commit 메뉴 > Changes 목록에서 Commit 할 파일들 선택 > Commit Message 작성 > Commit > 좌측 하단 Git > Log > ↗ 아이콘이 생겨있는 Git Local branch 우클릭 > push
Git history로 파일 비교해서 보면 왼쪽이 이전 소스, 오른쪽이 변경된 소스입니다.

프로젝트 Git URL 확인

좌측 하단 Git > Log > Remote 우클릭 > Manage Remotes
또는
프로젝트명 우클릭 > Git > Manage Remotes
프로젝트에 연결된 Git URL 주소를 확인하거나 삭제할 수 있습니다.


IntelliJ Git 아이콘 구분

노란 연필 아이콘 로컬 소스 (warkspace)
초록 연필 아이콘 로컬저장소 소스
빨간 연필 아이콘 원격저장소 소스

Checkout

다른 브랜치로 이동하며, 로컬 소스를 이동한 브랜치의 소스로 전환합니다.
브랜치명 앞 아이콘이 연필 형태로 변경됩니다.

IntelliJ Checkout 방법

Checkout 할 브랜치 우클릭 > Checkout > 충돌이 나면 Git Checkout Problem 창이 나옵니다.
충돌 파일 더블클릭 시 현재 로컬 소스와 Checkout 한 브랜치의 소스를 비교하고, 현재 로컬 소스를 수정할 수 있습니다.

Force Checkout 변경된 로컬 소스를 버리고, 강제로 이동하며 이동한 브랜치의 소스로 전환
Smart Checkout 변경된 로컬 소스를 이동할 브랜치의 소스에 Merge 하며 이동

Commit 하지 않은 내 소스와 원격 소스의 충돌 사항이 있다면, Conflict 창이 나와서 직접 Result를 만들 수 있습니다.


Stash

프로젝트 내 변경된 로컬 소스들을 Stash 영역에 백업하고, 마지막으로 PULL 받은 상태로 되돌립니다.

Stash 사용하는 경우

  • 다른 브랜치로 Checkout 할 때 현재 작업중 소스 유실이나 Merge 없이 이동하고 싶은 경우
  • 원격 저장소 브랜치를 PULL 하기 전, 현재 작업중 소스와 충돌이 우려되어 백업하고 싶은 경우
  • 개발서버, 운영서버 war 빌드 시 현재 작업중 소스는 반영하고 싶지 않은 경우

IntelliJ Stash 방법

프로젝트 우클릭 > Git > Stash Changes… > Message 작성 후 Create Stash
현재 로컬 소스 Stash 영역에 저장합니다.

Unstash 방법

프로젝트 우클릭 > Git > Unstash Changes… > 원하는 Stashes 선택 후 Apply Stash
현재 로컬 소스를 Stash 영역에 저장한 소스로 되돌립니다.


Merge

다른 브랜치의 소스를 현재 브랜치에 병합합니다.

IntelliJ Merge 방법

  1. 소스 유실 방지를 위해 현재 작업중 소스 Stash
  2. 다른 브랜치의 소스를 반영받고 싶은 브랜치로 Checkout
  3. 다른 브랜치명 우클릭 > merge ‘다른 브랜치명’ into ‘현재 브랜치명’ 선택
  4. Smart Merge : 변경된 로컬 소스를 이동할 브랜치의 소스에 Merge
  5. Smart Merge 시 충돌이 나면 비교 창이 뜨니 수동으로 잡아줍니다.
  6. merge 이력 Push

Cherry-Pick

Cherry-Pick 기능으로 단일 커밋만 Merge 할 수 있습니다.
운영서버 반영용 브랜치에 개발 브랜치의 일부 커밋만 반영하고 싶을 때 사용하면 좋습니다.
여러 건을 Cherry-Pick 할 때는 1건씩 하는 것이 좋고, 이왕이면 merge 해야 커밋 누락을 방지할 수 있습니다.

IntelliJ Cherry-Pick 방법

  1. 소스 유실 방지를 위해 현재 작업중 소스 Stash
  2. 다른 브랜치의 소스를 반영받고 싶은 브랜치로 Checkout
  3. 다른 브랜치 클릭 > git 커밋 목록에서 합치고 싶은 커밋 우클릭 > Cherry-Pick
  4. Cherry-Pick 시 충돌이 나면 Accept Theirs 후 Commit 해주면 됩니다.

작업한 소스 올리는 순서

개인브랜치에서 작업한 내용을 푸쉬하고, 원격 저장소의 develop 브랜치에 반영하는 방법입니다.
아래와 같이, update 먼저 받고 push 후 merge하여 올리면 소스 충돌이 나지 않습니다.

  1. Fetch 해서 원격 저장소 브랜치들의 Push 이력을 가져옵니다.
  2. develop 브랜치에 변경 내용이 있다면, develop 브랜치 우클릭 > pull 또는 update
  3. 개인브랜치로 이동하여 develop 브랜치 우클릭 > Merge ‘develop’ into ‘개인브랜치’ > Merge 이력 Push
  4. 작업한 소스를 (Stash 했었으면 Unstash로 되살리고) Commit and Push
  5. 다시 develop 브랜치로 이동 > Merge ‘개인브랜치’ into ‘develop’ > Merge 이력 Push

소스 복원 방법

마지막 커밋 소스로 되돌리기

파일 또는 프로젝트 우클릭 > Git > Rollback

이전 커밋 취소

reset
취소하려는 커밋 우클릭 > Reset Current Branch to Here… > Mixed > Reset
해당 커밋시점 직후로 커밋 기록을 되돌립니다.

Revert
취소하려는 커밋 우클릭 > Revert Commit
해당 커밋의 취소 커밋이 하나 더 생깁니다.

Leave a comment