0_Git(개인,사용법)
로컬 저장소 : 내 컴퓨터에 있는 저장소
원격 저장소 : 외부에 있는 저장소(github)
저장
commit : 변경 또는 추가된 작업 내용을 로컬 저장소에 저장하는 작업
push : 로컬 저장소의 commit된 내용을 원격 저장소에 업로드
merge(원격저장소) : push를 통해 원격 저장소에 업로드된 내용을
기조 원격 저장소의 내용과 병합
(같은 branch는 자동으로 병합이 진행됨)
받기
fetch : 원격 저장소의 내용을 로컬 저장소로 다운로드 받음.
merge(작업환경) : 로컬 저장소의 내용 중 fetch된 내용을 작업 환경으로 병합함
pull : fetch + merge
* branch : 한 프로젝트 개발 시 여러 버전을 병렬로 관리하기 위해 사용되는 기능
* master branch : 여러 버전으로 나누어진 프로젝트를 최종적으로 합치는 branch로
팀 프로젝트 시 신중히 관리해야함.
한 사람만 master를 관리하고(팀장이 관리하는게 좋습니다.)
다른 팀원들은 병합 내용을 받을때를 제외하고 건들지 말 것!
- 개발자 마다 별도의 barnch를 부여하여 개발을 진행(서로 변경된 내용이 반영되지 않아 영향이 없음)
- 각자 commit & push를 진행하고 최종적으로 프로젝트 병합을 위해
master branch에게 pull request를 진행함.
* pull request : 자신의 작업내용을 master branch 버전에 병합하기 위하여
master branch 사용자에게 병합 요청을 보내는 것.
-> 이 때 master branch는 내용을 확인하고 병합을 진행 하나
conflict(충돌)가 발생하는 경우 이를 해결한 후 병합 하거나, 병합을 하지 않을 수 있음.
* github 연결하기(개인 프로젝트 관리, 최초 프로젝트 등록)
1. 원격 저장소 생성
2. .gitignore 추가
(아래 내용만 추가)
*/target/**
/jspwork/
.class
3. persistance -> git 추가
4. 원격 저장소 주소 복사 후 이클립스에서 clone uri 진행
(원격 저장소와 이클립스 연결)
5. java ee로 전환 후 원격 저장소에 업로드 하고자 하는 프로젝트 선택
우클릭 -> team -> share project 선택 -> 로컬 저장소 경로 선택
6. Window - show view - other - git staging 추가
7. 연결된 프로젝트 선택 후
git staging 화면에서 unstaged Changes 오른쪽 ++(add to index) 버튼 클릭
8. commit message에 '최초 등록' 작성후 commit and push 진행
9. github에서 업로드 된것을 확인
10. .gitignore 내용을 수정
# Created by https://www.gitignore.io/api/java,eclipse
# Edit at https://www.gitignore.io/?templates=java,eclipse
*/target/**
/jspwork/
### Eclipse ###
.metadata
bin/
tmp/
*.tmp
*.bak
*.swp
*~.nib
local.properties
.settings/
.loadpath
.recommenders
# External tool builders
.externalToolBuilders/
# Locally stored "Eclipse launch configurations"
*.launch
# PyDev specific (Python IDE for Eclipse)
*.pydevproject
# CDT-specific (C/C++ Development Tooling)
.cproject
# CDT- autotools
.autotools
# Java annotation processor (APT)
.factorypath
# PDT-specific (PHP Development Tools)
.buildpath
# sbteclipse plugin
.target
# Tern plugin
.tern-project
# TeXlipse plugin
.texlipse
# STS (Spring Tool Suite)
.springBeans
# Code Recommenders
.recommenders/
# Annotation Processing
.apt_generated/
# Scala IDE specific (Scala & Java development for Eclipse)
.cache-main
.scala_dependencies
.worksheet
### Eclipse Patch ###
# Eclipse Core
.project
# JDT-specific (Eclipse Java Development Tools)
.classpath
# Annotation Processing
.apt_generated
.sts4-cache/
### Java ###
# Compiled class file
*.class
# Log file
*.log
# BlueJ files
*.ctxt
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
# End of https://www.gitignore.io/api/java,eclipse
11. 집 또는 다른 컴퓨터에서 이클립스를 킴
(학원 연습 시 c:\workspace2 라는 폴더를 새로 만들어서 연습 진행)
12. 이클립스 기본 환경 설정 진행
13. persistance -> git 추가 후
자신의 github에 접속하여 uri를 복사해옴
14. clone uri를 진행하여 원격 저장소를 로컬 저장소와 연결함
15. 원격저장소에서 프로젝트를 import 해옴
16. 에러가 없는지 확인 후 실행해보기
----------------------------------------------
추가 작업 내용 저장소 업로드 하기
1. 이클립스에서 작업한 내용(추가, 변경, 제거)이
Git Staging의 unstaged Changes에 반영된 것을 확인
2. 저장소에 반영하고하느 사항들을 선택하여
아래 Staged Change에 드래그(또는 선택 후 +버튼)
3. commit message 작성(변경 사항에 대해서 작성, 자세할 수록 좋음)
4. Commit and Push를 클릭하여 로컬 저장소 저장(commit), 원격 저장소 저장(push)를 진행
5. github에서 commit 확인
---------------------------------------------------
추가 작업 내용 저장소에서 내려받기
원격 저장소에 업로드된 내용을 받을 프로젝트 우클릭
Team -> Pull 클릭
(자동으로 기존 내용에 merge가 진행됨)
** 개인 프로젝트 형상관리 시 주의사항 [conflict(충돌)에 주의하자!!!]
1. 형상관리 대상 프로젝트는 무조건 PULL 받고 시작하자!
ex) 학원과 집에서 작업을 한다고 했을 때(반대 상황도 동일)
1) 저장소에 업로드된 프로젝트를 집에서 작업한 경우
학원에 등원 하자마자 PULL 수행 후 작업 진행
2) 학원에서 하나의 작업이 마무리 될 때 마다
Commit and Push를 진행
3) 하원 후 집에서 해당 프로젝트를 PULL을 받지 않고
학원에서 진행한 부분과 같은 클래스 또는 View에 작업을 하고나서
뒤늦게 PULL을 받게되면
같은 파일에 서로 다른 내용이 작성되어
Merge(병합)을 할 수 없다! 라는 에러가 발생함.
--> 충돌(conflict)이 발생함.