IntelliJ내에서 Git사용

김신영·2023년 5월 13일
0

IntelliJ

목록 보기
2/2
post-thumbnail

오래되서 git 플러그인이 intelliJ를 설치하면서 같이 받아지는건지 내가 따로 플러그인을 추가했는지는 기억이 나지 않는다.

git hub를 사용하던 git lap을 사용하던 intelliJ에서 연동해서 보다 편하고 빠르게 사용할 수 있다.
기본적으로 Git의 CLI를 편하게 사용하기 위한다는 목적이 같기때문에 개인적으로 사용하는 GUI툴 (tortoisegit, bitbucket, Sourcetree등등) 이 있다면 그걸 사용해도 동일한 기능을한다.

내가 자주 사용하는 git 단축키

  1. 커밋 - ctrl + k
  2. 푸쉬 - ctrl + shift + k
  3. 업데이트 - ctrl + t
  4. Add - ctrl + alt + a
    : repository에 add되지 않은 파일을 추가
    (add되지 않은 파일은 intelliJ 내에서 파일명이 빨간색으로 표시된다)
  5. Rollback - ctrl + alt + z
    : 선택된 파일을 repository에 올라간 최신 기준으로 롤백한다.

commit 내용취소

intelliJ 왼쪽 하단부분을 보면 git 히스토리를 확인할 수 있는 탭이 존재하는데
아래의 사진과같이 commit은 했지만 repository로 아직 push하지 않은 commit이 존재할 경우
취소를 할 수 있는 방법이 3가지 존재한다.

  1. Undo Commit (취소하고 싶은 commit이 가장 마지막에한 commit일경우)
    : 새로작성 or 변경한 내용이 존재할 경우 변경된 상태 그대로를 유지하며 commit의 기록만을 제거한다.

  2. Revert : 선택한 commit 내용을 취소하고 (변경내용 삭제) 이를 토대로한 새로운 commit을 생성

    위의 그림을 보면 현재 작업 브랜치는 mater이고 master에는 [브랜치 테스트] 와 [브랜치 테스트2] 라는 커밋이 repository에 push되지 않은 상태로 존재하는데 [브랜치 테스트2]를 선택 후revert했을경우 [브랜치 테스트2]에서 추가 해주었던 Test3이라는 class파일이 제거되고 revert라는 이름이 붙은 commit이 새로 생긴것을 확인할 수 있다.

  3. Reset : 선택된 commit 이후의 commit을 모두 취소. reset에는 총 4가지 옵션이 존재한다.
    3-1 : Soft - 변경사항은 그대로 유지하면서 commit이전 상태로 변경 (변경사항을 다시 commit할수 있음)
    3-2 : Mixed - soft와 같지만 변경사항을 다시 commit할 수 없음
    3-3 : Hard - 변경사항 전체 무시하고 선택된 commit상태로 변경 (추가적으로 작업한 내용이 존재할 경우 사라질 수 있음)
    3-4 : Keep - Hard와 동일하지만 localhistory는 유지

※ 개인적으로 검색해서 알아봤던 내용이 이해가 가지 않아서 reset이던 revert던 하나하나 직접 해보면서 차이점을 알아봤다. 기본적으로 사용하는게 mixed라고 하는데 soft나 keep을 제일 많이 사용할것같다.

Branch 추가 및 변경

intelliJ 오른쪽 하단부를 보면 현재 자신이 어떤 브랜치를 바라보고있는지가 표시된다.
이부분을 클릭하면 새로운 브랜치를 추가 할 수도 있고 내가 다른 브랜치를 클릭한 후 checkout을 하면 해당 브랜치로 변경도 가능하다.
다른 브랜치의 작업내용을 현재 작업중인 브랜치로 가져오는것도 가능한데
예를 들어 기능하나를 test_branch에 작업한 후 mater브랜치로 가져오고 싶으면 Rebase또는 Merge를 사용하면된다.

Merge와 Rebase의 차이점

  • Merge
    다른 브랜치에서 현재까지 commit & push한 내용을 하나의 merge commit으로 합치는 것. 브랜치가 엄청 많아지면 히스토리를 보기 어렵다.

  • Rebase
    1) base의 위치를 변경해서 다른 branch에서 commit한 내역을 최신으로 보고 그대로 끌어오는 식으로 합치는 것
    → 중복 로그를 남기지 않고, merge log를 줄여 히스토리를 깔끔하게 정리할 수 있어 Rebase는 주로 히스토리를 깔끔하게 유지하기 위해 사용한다.
    2) Rebase는 히스토리를 지운다. 이로인해 Conflict가 날수도 있고, 데이터의 유실이 일어날 수 있다.
    3) 다른사람이 그 Branch에서 작업중일 수도 있기 때문에 공개된 (다른사람들이 접근할 수도있는) Branch에서 Rebase하면 안된다.

나는 사실상 실무에서 협업하면서는 Merge만 사용했다. 불가피하게 하나의 파일을 여러사람이 같이 작업하게 되었을 경우 충돌이 일어나면 바뀐부분을 직접 눈으로 확인하고 Merge해주어야 누락이 생기는걸 방지할 수 있기 때문이다.

※ Gitignore

-보안상으로 위험성이 있는 파일 (DB접속정보, mail전송을 위해 사용한 개인 mail정보 등등)
-프로젝트와 관계없는 파일
-용량이 너무 커서 제외해야되는 파일
등을 commit시에 제외하고 싶을 경우 최상단에 존재하는 .gitignore파일에 작성해주면 해당되는 파일은 intelliJ내에서 노란색이름으로 표시되면서 내용이 변경되어도 commit시에 포함되지 않는다.

profile
공부합시다.

0개의 댓글