study/Git

0_Git(개인,사용법)

스파이크12 2020. 2. 20. 08:32

로컬 저장소 : 내 컴퓨터에 있는 저장소
원격 저장소 : 외부에 있는 저장소(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)이 발생함.