1) git 입문 - 이론
(1) 형상 관리를 위한 git
소프트웨어의 형상은 다양함(웹페이지, 프로토타입, 소스코드 등...) && 계속 변함
요구 사항 변경 → 디자인 문서 업데이트 → 소스코드에도 영향을 줌 → [verification] 수정이 필요한 버그, 개선이 필요한 요구사항 발생 → (반복) ⇒ 고객에게 릴리즈되는 소프트웨어 완성
형상 관리: 소프트웨어의 변경점을 체계적으로 추적하고 관리하는 일련의 모든 활동(SCM)
— 중요성: 프로젝트의 리스크를 최소화 && 소프트웨어의 품질 확보
— 대상: 소프트웨어 개발 모든 단계에서 발생하는 산출물(서비스 정의서, 요구사항 명세서, 스포리보드, 와이어프레임, 소스코드, 설계문서, API 문서, 가이드 문서...)
— 소스코드를 형상관리 할 수 있는 도구 ⇒ Git(이외에도 많음)
git의 목표: 빠른 속도, 단순한 구조, 비선형적 개발(수천개의 동시 다발적인 병렬 개발과 공유), 완벽한 분산(↔ 중앙 집중) && 무료, 커맨드 기반, 설치 공간 작음
— 중앙 집중형 CVCS: 서버에서 작업할 파일을 가져온다 → 맡은 부분 개발 → 서버에 보낸다 // 간단, 네트워크 끊기면 노답, 이 때 손실되면 복구 힘듬
— 분산 집중형 DVCS: 서버에 작업할 파일 있음 + 각각의 개발자들에게도 풀셋 파일 있음 // 네트워크 없어도 작업 가능, 있으면 원격 서버(원래 서버)로 올리기 가능, 복원도 가능, 대부분 분산 집중형 씀
2) Git 설치
나는 이미 설치함
위에 언급된 모든 장점때문에 없으면 컴공생활 망함
소스트리나 깃허브 데스크탑 쓰는 친구들도 많던데, 나는 그냥 커맨드 입력하는 게 젤 편한 것 같다(그런데 언제 또 생각이 달라질지는 모름)
강의에서는 기본값 그대로 사용(나도 마찬가지)
- 설치 여부 확인
3) Git 기본 이해
저장소
— 원격 저장소
— 로컬 저장소(내 pc)
— 작업 디렉토리: pc에서 작업중 && git에서 관리 O 추적 X
— 스테이징 영역: 작업한 내용이 올라가는 임시 저장 영역, git add를 통해 추가, commit을 준비
— 로컬 레포지토리: 커밋들이 영구적으로 저장되는 영역, 원격 저장소로부터 clone한 커밋들이 존재하는 영역
커밋: git에서 가장 의미있는 변경의 단위
커밋하다 == 변경점을 로컬 저장소로 저장하는 과정
(살짝 찔림 난 그냥 아무 변경지점에나 커밋해서...)
git 기본 플로우
- 원격 저장소의 소스코드를 클론
- 작업 디렉토리에서 소스코드 작업
- 스테이지 영역에 git add
- 의미 있는 변경점이 쌓이면
- git commit
- 로컬 저장소에 영구적으로 저장
- (원격저장소 변경점 git pull 하고)
- 내 커밋들 git push
Git 기본 플로우 이해
기본환경설정, 원격저장소
기본 환경 설정 사용자의 이름, 이메일 기본 설정으로 등록
git config --global user.name "이름"
git config --global user.email "이메일주소"
기본 에디터를 vim으로 기본 설정 + 설정 정보 확인
mkdir ~/gittest
mkdir: making directory
~/ 루트 밑에 새로 놓겠다
원격저장소 생성
깃헙, 깃랩 등이 있음
깃허브에는 많은 오픈소스 프로젝트들이 많다
gitlab은 상용화 sw에서 많이 사용한다
강의에서는 gitlab을 사용
git init을 입력하면 마스터 브랜치, .git 폴더가 생성된달
git remote <저장소 별칭> <원격저장소 주소>
→ ㄹ컬저장소와 원격저장소를 연결
git remove -v
→ 연결된 원격 저장소를 알 수 있음
코드 변경점과 커밋
파일 생성 및 수정
깃에서 vi editor를 쓰는 게 너무 신기함
저번 학기에 리눅스 관련 수업 들었을 때 puTTy에서 연습하면서 이거를... 쓸 일이 있을까...? 그런 생각이 있었는데 방학 되자 마자 씀
작업 디렉토리의 파일 상태
untracked: 변경점은 발생했으나 git에 의해 관리되지 않은 파일, 단 한번도 staging area에 포함되지 않은 파일
tracked: git에 의해 관리되는 파일, staging area에 한 번 이상 포함된 파일
스테이징 영역에 변경점 추가
코드변경과 커밋
커밋의 단위는? 동료들과 논의하는 게 좋다
git commit을 입력하면 커밋 메세지 창이 뜬다
i를 누르고 커밋 메세지 입력 + esc + :wq + enter
커밋 히스토리 확인 git log
생성한 커밋의 이름, 커밋 메세지...
해시값을 가지고 커밋 아이디를 생성함
파일 추가 수정 + 변경된 코드 확인(git diff)
현없에서는 많이 사용 못함) 변경점이 적은 경우 쉽게 파악이 바로 가능하지만, 많을 때는 파악이 어려움
커밋 생성과 복구
커밋 히스토리 과련 옵션
git log -u
git log -u 'commit ID'
git log -1
git log -2
git log --name-only #파일리스트 출력
git log --oneline # 커밋 한 개당 한 줄
git show 'commit ID'
커밋 되돌리기
1)
git commit --amend
마지막 반영한 최신 커밋 메시지를 수정하고 싶을 때, 최신 커밋 수정 가능한 에디터가 실행됨
2) 커밋에 추가할 변경점이 있을 때
커밋 되돌리기2
git revert '마지막에 반영한 commit Id'
git에서 코드를 되돌린다
원격저장소에 커밋 반영하기
git push <원격저장소 이름> <브랜치>
git clone <원격저장소 주소>
git pull
- 코드프레소 Java 웹 개발 체험단 활동 중(https://www.codepresso.kr/)
'Programming' 카테고리의 다른 글
[스프링 입문] 스프링 빈과 의존 관계 (0) | 2022.03.24 |
---|---|
[스프링 입문] 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 (0) | 2022.03.10 |
[처음 시작하는 Java 프로그래밍] 강의 노트 (0) | 2022.01.17 |
[react-native] Render Error View config getter callback for component must be a function (received `undefined`). Make sure to start component names with a capital letter. (0) | 2021.12.05 |
[react-native] Context API (0) | 2021.12.03 |