17. Git/ItelliJ IDEA

01. 인텔리 제이 IDEA (IntelliJ IDEA) - 깃 허브 (Git Hub) 연동

THE HEYDAZE 2020. 8. 22. 08:54
OS Windows 10 Home 64bit 버전 1903 (OS 빌드 18362.836)
EditTool IntelliJ IDEA 2019.1.3

# 준비단계

인텔리제이는 Git을 설치 후 경로 설정을 해주어야 합니다

 

깃 허브 계정을 적어줍니다

 

#1. 깃 허브에 공유하기 = 깃 허브에 프로젝트 업로드

깃 허브 공유

 

토큰 방식 인증

 

Developer settings 클릭

 

Personal access tokens 클릭 후  Generate new token 클릭

 

원하는 항목 클릭 후 맨 하단의 Generate Token 클릭 하여 생성

 

토큰 복사 하여 인텔리제이에서 토큰인증

 


 

아이디/비밀번호 입력

 

원격 저장소 초기 설정

 

원격 저장소에 올릴 항목 설정

pulbic 공개로 올릴 때는

서버 아이피 주소 또는, 패스워드 등 중요한 파일은 .gitignore 에서 제외 바랍니다

application.xml, application.properties, application.yml 도 깃 허브에 올라갑니다

( private 비공개로 올리면 상관없습니다 )

 

완료

 

# 클론 (Clone) 생성하기 - 협업하기 = 깃 허브에서 프로젝트 다운받기

git checkout

 

원격 저장소 HTTP URL 입력

 

HTTP URL 복사

 

생성할 위치 지정 후 Clone 버튼 클릭

 

빌드 툴 설정 문구

 

위 그림 처럼 설정 후 확인 버튼 클릭

 

Clone 생성 완료

 

# 스테이징 저장

파일 생성

프로젝트 파일 내에서 파일을 생성한다

 

add 질문

깃 허브 연동을 했다면 파일 생성 시, 스테이징에 add 할 지 질문을 한다

add 를 누르면 이 파일은 바로 commit 을 할 수 있다.

cancel 를 누르면 이 파일은 수동으로 add 해야지만 commit 이 된다

 

Settings

Remember 체크를 했어도 세팅에서 다시 재설정 할 수 있다

 

add 된 파일과 add되지 않은 파일

스테이징에 add 된 파일은 초록색으로 변하며, 커밋할 수 있다.

스테이징에 add 되지 않은 파일은 빨간색으로 변하며, 커밋할 수 없다.

 

[ 참고 ]

  색   설명
  빨강색 Red   [#FF0000] Workspace Files = add 되지 않은 파일
  초록색 Green   [#0EAA00] Staged Files = add 된 파일
  파랑색 Blue   [#0032A0] Modified Files = 수정 된 파일
  하양색 White   [#FFFFFF] Commited Files = 커밋된 파일
  회색 Gray   [#616161] Deleted Files = 삭제된 파일
  어두운 노랑색
  Dark Goldenrod
  [#727238] Ignored Files = .gitignore 에 무시된 파일
  깊은 청록색
  Dark Green
  [#007C7C] Renamed = 이름이 변경된 파일
  보라색 Purple   [#773895] Deleted from file system = 로컬 저장소에서 삭제는 되었으나 add 하지 않아 저장소에
                그대로 남아 있는 파일

 

 

File Status Highlights - Help | IntelliJ IDEA

File Status Highlights In IntelliJ IDEA, each file is marked with a color according to its state in the version control you are using. In the editor, each line in a file is checked for its version control state and is marked with a color in the gutter. Fil

www.jetbrains.com

 

 

오른쪽 상단에 커밋 버튼 클릭

 

커밋 창
커밋 창 (추가 설명을 위해 나중에 추가한 그림입니다)

스테이징에 없는 파일은 commit 대상이 아니기 때문에  현재 Something.java 파일만 커밋할 수 있다

 

현재 로컬 저장소의 커밋이 원격 저장소 커밋보다 앞서있다. 맞춰주기 위해서는 Push 를 해주어야 한다

 

위와 같이 Push 를 누른다 또는 Ctrl + Shift + K

 

push 창

master 는 로컬 저장소의 master 브랜치이며, origin : master 는 원격 저장소(깃 허브)의 master 브랜치 이다

(여기서 origin 은 Git-Hub 서버의 별칭이다)

현재 로컬 저장소 master 브랜치의 최종 커밋까지 원격 저장소(깃 허브) 에 올린다는 뜻 이다

Push 버튼을 눌러 원격 저장소(깃 허브)에 올린다

( push 버튼을 누르면 IntelliJ IEDA 하단에 보면 Push... 라고 메시지가 뜨는데, 사라지면 원격 저장소(깃 허브)에 Push 가 완료된 것이다 )

원격 저장소(깃 허브)에 올라간 모습

 

최종 커밋

 

# 원격 저장소(깃 허브) 최종 커밋 삭제

Reset HEAD 클릭

 

Reset Type = Hard, To Commit = HEAD^

 

3개에서 2개로 줄어든 모습

 

$ git push -f 명령으로 로컬 저장소의 커밋을 원격 저장소에 적용시킴

 

원격 저장소(깃 허브) 에서도 삭제 된 모습

 

최종 커밋 위치가 서로 같은 모습

 

# 원하는 지점의 커밋을 최종 커밋으로 설정 및 그 이후 커밋들 모두 삭제처리

원하는 지점에서 우클릭 - Reset Current Branch to Here 클릭

 

Hard 클릭 - Reset 클릭

 

3개에서 2개로 줄어든 모습

 

$ git push -f 명령으로 로컬 저장소의 커밋을 원격 저장소에 적용시킴

 

원격 저장소(깃 허브) 에서도 삭제 된 모습

 

최종 커밋 위치가 서로 같은 모습

 

NotAdd.java 는 Something.java 와 달리 애초에 Commit 안되어 있기 때문에 남아 있는 모습이다

 

# 현재 문서 rollBack

커밋 한 상태에서 파일을 수정하다 이전 파일내용으로 복구하려면 rollBack 을 이용한다

윈도우 - 이클립스 키매핑 단축키는 ctrl + alt + z

 

# Git stash

ctrl + shift + a 액션에 들어간 뒤 stash 치면 나온다

 

Actions

 

stash

 

 

unstash

 

# Open on GitHub - 현재 라인을 깃허브로 연다

 

# View Pull Request - pull 요청 목록들 보기

 

요청에 대해 댓글도 달 수 있다

 

# git push force 사용 설정

protected branches 부분에 'master' 부분을 지워주면 된다

# 깃 눈에 보기 쉬운 병합 플로우 방법 git merge flow - non fast forward merge 
  Fast-Forward-Merge Non-Fast-Forward-Merge
Merge 전
방법
Merge 후

 

 

 

# 깃 이전 커밋 수정, 이전 커밋 그룹화 git rebase -i HEAD~번호

 

 

 

커밋메시지를 심플하게 가기 위해서 지우고 싶은 커밋들을 Squash 해 준다

 

 

feature/login 브랜치 생성 -- A
feature/login UI 작성중  -- B
feature/login Service 작성중  -- C
feature/lgin 로그인 페이지 생성 -- D

위와 같이 A,B,C,D 라고 가정했을 때
왼쪽은 D | 가운데는 B+C | 오른쪽은 A 가 된다
git flow 를 간단하게 가기 위해서 왼쪽만 반영하면 된다

 

 

 

이 다음 dev 에 merge 를 해주면 된다

git merge flow - non fast forward merge  참고바람

https://meetup.toast.com/posts/122

 

GitHub의 Merge, Squash and Merge, Rebase and Merge 정확히 이해하기 : NHN Cloud Meetup

GitHub의 Merge, Squash and Merge, Rebase and Merge 정확히 이해하기

meetup.toast.com

 

# 깃 커미엣에 태그 달기 git tag

 

 

# 커밋은 보류하고 임시저장하고 싶을 때 git stash

 

 

# git pull request = pr

 

# 다른 브랜치의 일부 커밋만 반영하고 싶을 때 git cherry-pick

 

# git helper 끄기