출처:https://beyondj2ee.wordpress.com/2013/06/28/%ec%9d%b8%ed%85%94%eb%a6%acj-%ec%8b%9c%ec%9e%91%ed%95%98%ea%b8%b0-part4-getting-start-intellij-git/
[– Pre – Requirements ——]
(1) Git 설치
IntelliJ에서 사용을 하기 전에 반드시 Git을 먼저 설치를 해야 합니다.
Git은 OS에 따라서 설치 방법 과 패키지가 틀립니다.
Window 환경같은 경우는 msysGit를 설치 해야 합니다.
※ Mac 사용자 분들은 git-osx-installer를 설치 하시면 됩니다.
최신 msysGit 버전을 다운로드 받습니다.
http://code.google.com/p/msysgit/downloads/detail?name=Git-1.8.0-preview20121022.exe&can=2&q=
window 설치 프로그램 이기 때문에 아래의 순서로 설치를 진행 합니다.
설치가 완료 되면 바탕화면에 Git Bash 아이콘 생성 됩니다.
실행을 하면 마치 linux 터미널 모습을 보실 수 있습니다.
$ git config –list
git을 사용하기 위해서 아래의 기본 설정을 반드시 해야 합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 |
#사용자 정보 입력 $ git config --global user.name "beyondj2ee" $ git config --global user.email "beyondj2ee@gmail.com" #쉘 color 지정 $ git config --global color.ui "auto" #사설 인증서를 사용할 경우 ssl 검증을 클라이언트에서 하지 않음 $ git config --global --bool --add http.sslVerify false #Http POST 요청 버퍼 사이즈를 설정 한다. $ git config --global http.postBuffer 524288000 #UTF-8 설정 (Window 환경에서만 해당됨) $ git config --global i18n.commitEncoding cp949 $ git config --global i18n.logOutputEncoding cp949 #intelliJ에서는 ignored 기능이 적용이 되지 않아서 설정해야함 #설정 scope은 global로 적용됨 vi ~/.gitignore_global target build bin .git .svn *.class *.bak $ git config --global core.excludesfile ~/.gitignore_global |
(2) Github Repository 생성
Git은 로컬에도 Repository가 존재하기 때문에 원격 저장소가 없어도 되지만,
대부분 원격 저장소를 사용을 합니다.
여기서는 무료로 제공되는 Github를 통해서 원격 Repository
를 생성 하겠습니다.
※ Github 계정 및 repository 생성은 완전 쉽습니다. ^^
Github 생성 페이지에 접속 합니다. (https://github.com/users)
그리고 username, email, password 만 입력 하면 됩니다.
계정 생성 완료 후 우측 상단에 Create a new repo 를 선택 합니다.
여기서는 Repository name이 제일 중요합니다. 이유는 URL에 포함이 되기 때문입니다.
되도록 짧게 작성을 합니다.
입력이 완료되면 Create repository 버튼을 선택 합니다.
생성이 완료 되면 Repository 화면으로 이동 하며,
상단에 Repository URL ( https://github.com/beyondj2ee/intellij.git) 을 확인 할 수 있습니다.
[- Compare Svn with Git ——]
Svn 과 Git에 대해서 비교해서 간략하게 설명 드리겠습니다.
Svn 같은 경우 “workspace“, “index“, “repository” 3개의 저장 영역이 있습니다.
workspace : 원격 저장소로 부터 checkout을 받은 로컬 디렉토리 입니다.
index : 커밋 대상이 대상이 되는 파일들에 대한 메타 정보 입니다.
repository : 원격 저장소 입니다.
신규 파일을 workspace(로컬 디렉토리)에 추가를 합니다.
하지만 파일을 생성한다고 해서 svn이 자동으로 인식하지 못합니다.
그래서 commit 대상 파일 이란것을 add 명령어를 통해서
메타 데이터에 등록을 합니다.
이제 모든 작업을 완료 되면 원격 저장소에 저장을 하기 위해서 commit을 합니다.
즉 Svn에서 말하는 commit은 “원격 저장소에 수정 사항을 영구적으로 저장한다” 입니다.
반면 Git은 전체적으로 SVN 동일한 프로세스로 되어 있습니다.
틀린점이 repository가 2개(local, remote) 입니다.
workspace : 원격 저장소로 부터 checkout을 받은 로컬 디렉토리 입니다.
index : 커밋 대상이 대상이 되는 파일들에 대한 메타 정보 입니다.
Local Repository : 로컬 저장소 입니다.
Remote Repository : 원격 저장소 입니다.
신규 파일을 workspace에 생성 하고 add 명령을 통해서 commit 대상 파일 등록을 합니다.
수정이 완료 되면 commit 명령을 통해서 local repository에 저장을 합니다.
여기서 중요한 점은 위에서 말씀 드렸듯이 원격 저장소가 아닌 로컬 저장소에
저장을 하는 것입니다.
로컬 저장소에 commit이 완료되면 push 명령을 통해서 원격 저장소에
최종 버전을 저장 합니다.
물론 내부적으로 Git에 대한 명령어가 많지만, 아키텍쳐 관점에서 보면
repository가 2개로 분리된것 뿐입니다.
이렇게 분리한 이유는 원격 저장소에 의존하지 않고,
로컬 환경에서 VCS의 기능을 개인이 자유롭게 쓰기 위함 입니다.
※ 실생활에 비유 하면 SVN은 모든 주문/판매/정산을 직영점에서만
하는 것이고, Git은 각 대리점에서 주문/판매/정산을 하고, 최종 결과만
본점으로 통보 하는 것이라고 할 수 있습니다.
[– Git Import ——]
Git에서는 Import는 SVN 과 전혀 틀리지만, 결과론적 관점에서는 같습니다.
(1) 자바 프로젝트를 생성 하고 초안 작업을 합니다.
(2) 자바 프로젝트를 Git 로컬 Repository로 인식을 시킵니다.
(3) 작업 했던 내용을 로컬 Repository에 commit 합니다.
(4) 원격 Repository를 생성 합니다.
(5) push 명령을 통해서 로컬 Repository에 내용을 원격 Repository에 반영 합니다.
자바 모듈을 생성 합니다.
module3-git 모듈의 로컬 Repository를 생성 합니다.
VCS – Import into Version Control – Create Git Repository …
module3-git 모듈 디렉토리를 선택 합니다.
Part3에서 설명 드렸듯이 IntelliJ에서는 모듈 별로 반드시
어떤 VCS 를 사용할지 선택 해야 합니다.
Settings – Version Control로 이동 합니다.
모듈이 VCS를 인식 하기전에 로컬 Repository가 생성이 되었기 때문에
추가하라는 경고 문구를 볼 수 있습니다.
Add root를 선택 합니다.
적용이 완료 되면 module3-git의 폰트 색깔이 빨강색으로 변경 됩니다.
폰트 색깔의 의미는 아래와 같습니다.
- red : workspace file
- green : staged file
- blue : modified file
- white : commited file
- gray : deleted file
원격 Repository에 push를 하기 위해서는 접속 정보를 git에 등록 해야 합니다.
※IntelliJ는 원격 Repository 접속 정보 등록 기능이 없습니다.
module3-git 모듈 디렉토리로 이동 후 오른쪽 클릭 – Git Bash를 선택 합니다.
아래와 같이 명령어를 실행 합니다.
※ 반든시 본인이 생성한 원격 Repository URL를 입력 해야 합니다.
1
2
3
4
5 |
$ git remote remove origin $ git remote add origin https: //github .com /beyondj2ee/intellij .git $ git config --list remote.origin.url=https: //github .com /beyondj2ee/intellij .git remote.origin.fetch=+refs /heads/ *:refs /remotes/origin/ * |
이제 모든 기본 설정이 완료가 되었습니다. 마지막으로 IntelliJ에서
변경된 내용을 반영 하기 위해서
module3-git 오른쪽 클릭 – Synchronize… 를 선택 합니다.
원격 Repository에 Push 할때 매번 Github 계정을 물어 봅니다.
IntelliJ에서는 계정 정보를 한번 설정 후 자동으로 로그인 하도록 지원 합니다.
Settings – Version Control – GitHub 에서 계정 정보를 입력 합니다.
지금까지 정리를 하면 아래와 같습니다.
- module3-git 자바 모듈 생성
- 로컬 Repository 생성
- module3-git 모듈에 VCS for Git 설정
- 원격 Repository 접속 정보 설정
- Github 계정 등록
이제 서버로 Push를 하도록 하겠습니다.
module3-git 모듈의 첫번째 하위 디렉토리를 전체 선택 – 오른쪽 클릭 – Git – +Add 를 선택 합니다.
※ module3-git 모듈 디렉토리를 선택하면 안됩니다. IntelliJ 버그 인지 인식이 되지를 않습니다.
그다음 module3-git 모듈의 첫번째 하위 디렉토리를 전체 선택
– 오른쪽 클릭 – Git – Commit Directories.. 를 선택 합니다.
왼쪽 프레임에는 Commit 대상이 되는 소스들이 표시 됩니다.
comment를 입력 합니다. (커밋 메세지)
“Commit and Push..“를 선택 합니다.
commit 완료 후 push 화면이 나옵니다.
오른쪽은 Push 되어질 소스들 입니다.
하단에 Push current… 를 체크 합니다. 위에서 원격 Repository를 설정 했던
alias가 origin 이었습니다. 그래서 origin으로 설정 합니다.
그 다음은 원격 레파지토리의 branch를 설정 합니다. Git에서는 trunk 브렌치라고 하지 않고
master branch 라고 합니다.
즉 “로컬 Repository의 master 브렌치를 원격 Repository의 master 브렌치로
소스를 반영 해라” 라는 뜻입니다.
push가 완료되면 module의 폰트 색깔은 white 색깔로 변경 됩니다.
원격 Repository에 반영이 되었는지 확인 합니다.
[– Git Revert, Add, Commit & Push——]
(1) Revert
새로운 파일 “NewFile.txt“를 생성 합니다.
그런데 빨강색(workspace 영역)으로 표시가 되어야 하는데, 녹색 (staging 영역)으로
표시 됩니다.
이렇게 IntelliJ에서는 신규 파일 추가시 자동으로 staging 영역으로 add가 됩니다.
“staging” -> “workspace“로 강등(?) 하기 위해서 “revert“를 실행 합니다.
완료가 되면 빨강색으로 표시 됩니다.
(2) Add
파랑색으로 표시된 파일은 기존에 존재 하는 파일이 변경된 것입니다.
빨강색은 신규로 생성된 파일 입니다.
“NewFile.txt“를 “Add” 합니다.
“NewFile.txt“파일이 녹색(staging 영역)으로 변경 된 것을 확인 할 수 있습니다.
“Module3” 파일을 수정하고 저장을 하면 파란색으로 변경 됩니다.
하지만 Git Bash를 통해서 확인 하면 staging 되어 있지 않습니다.
즉, IntelliJ에서는 정확하게 Git의 각 단계에 따라서 색깔의 변화가 있는 것이
아니라 New, Updated, Commit 이렇게 구분이 됩니다.
그래서 반드시 작업 후 습관적으로 “add“를 할 필요가 있습니다.
(3) Commit & Push
Commit을 실행 합니다.
commit 될 파일을 보면 “NewFile.txt“이 보이지 않습니다. 이유는 staging 영역에 존재 하지 않기 때문 입니다.
“NewFile.txt“를 “Add” 하고 다시 “Commit“을 실행 하면 아래와 같이
대상 파일에 포함이 됩니다.
Commit 메세지를 입력 합니다.
Commit 후에 추후에 Push 할 경우는 “Commit” 버튼을 선택 합니다.
만약 Commit 과 Push를 동시에 할 경우
[– Git Checkout ——]
Git에서 Checkout 기능을 “clone“이라고 합니다. 즉 원격 레파지토리에 있는 소스를
로컬 PC에 데이터를 받으면서 동시에 로컬 Repository도 생성 합니다.
VCS – Checkout from.. – Git을 선택 합니다.
아래의 정보를 설정 합니다.
Git Repository URL : 원격 Repository URL
Parent Directory : IntelliJ Project 디렉토리 위치
Directory Name : Module 명
※ Clone를 실행 하기 전에 “Test” 버튼을 선택해서 확인 합니다.
“No“를 선택 합니다.
“Clone“한 소스를 Import 합니다.
IntelliJ에서 모듈이 생성 되었는지 확인 합니다.
“module3-git” 모듈이 VCS를 git을 사용 하도록 인식 시킵니다.
원격 Repository에 Push 테스트를 합니다.
'IntelliJ' 카테고리의 다른 글
[오류해결]@Override is not allowed when implementing interface method (0) | 2018.02.02 |
---|---|
프로젝트 파일 UTF-8 (0) | 2018.01.12 |
Intellij Part 3 - SVN(이론) (0) | 2018.01.12 |
Intellij Part2 - 자바 프로젝트 (0) | 2018.01.12 |
Intellij Part 1 - 기본 설정 (0) | 2018.01.12 |