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 방법
- 소스 유실 방지를 위해 현재 작업중 소스 Stash
- 다른 브랜치의 소스를 반영받고 싶은 브랜치로 Checkout
- 다른 브랜치명 우클릭 > merge ‘다른 브랜치명’ into ‘현재 브랜치명’ 선택
- Smart Merge : 변경된 로컬 소스를 이동할 브랜치의 소스에 Merge
- Smart Merge 시 충돌이 나면 비교 창이 뜨니 수동으로 잡아줍니다.
- merge 이력 Push
Cherry-Pick
Cherry-Pick 기능으로 단일 커밋만 Merge 할 수 있습니다.
운영서버 반영용 브랜치에 개발 브랜치의 일부 커밋만 반영하고 싶을 때 사용하면 좋습니다.
여러 건을 Cherry-Pick 할 때는 1건씩 하는 것이 좋고, 이왕이면 merge 해야 커밋 누락을 방지할 수 있습니다.
IntelliJ Cherry-Pick 방법
- 소스 유실 방지를 위해 현재 작업중 소스 Stash
- 다른 브랜치의 소스를 반영받고 싶은 브랜치로 Checkout
- 다른 브랜치 클릭 > git 커밋 목록에서 합치고 싶은 커밋 우클릭 > Cherry-Pick
- Cherry-Pick 시 충돌이 나면 Accept Theirs 후 Commit 해주면 됩니다.
작업한 소스 올리는 순서
개인브랜치에서 작업한 내용을 푸쉬하고, 원격 저장소의 develop 브랜치에 반영하는 방법입니다.
아래와 같이, update 먼저 받고 push 후 merge하여 올리면 소스 충돌이 나지 않습니다.
- Fetch 해서 원격 저장소 브랜치들의 Push 이력을 가져옵니다.
- develop 브랜치에 변경 내용이 있다면, develop 브랜치 우클릭 > pull 또는 update
- 개인브랜치로 이동하여 develop 브랜치 우클릭 > Merge ‘develop’ into ‘개인브랜치’ > Merge 이력 Push
- 작업한 소스를 (Stash 했었으면 Unstash로 되살리고) Commit and Push
- 다시 develop 브랜치로 이동 > Merge ‘개인브랜치’ into ‘develop’ > Merge 이력 Push
소스 복원 방법
마지막 커밋 소스로 되돌리기
파일 또는 프로젝트 우클릭 > Git > Rollback
이전 커밋 취소
reset
취소하려는 커밋 우클릭 > Reset Current Branch to Here… > Mixed > Reset
해당 커밋시점 직후로 커밋 기록을 되돌립니다.
Revert
취소하려는 커밋 우클릭 > Revert Commit
해당 커밋의 취소 커밋이 하나 더 생깁니다.
Leave a comment