TIL

230515) GIT 특강, 팀프로젝트 1-1회차

유이 YUI 2023. 5. 22. 15:56

 

팀프로젝트

 

  1. 지난 금요일 처음 합류하게 되어 사전캠프를 듣지 못한 탓에 팀원분들의 대화에서 이해하지 못하는 부분이 많아서 곤란했다. 특히 팀원분들이 당연하듯 사용하시는 단어들이 처음 듣는 단어인 경우가 많았다.

-> 팀원 분들과 얘기를 하다가 매니저님께 한 번 말씀 드려보는 게 좋겠다는 의견으로 모아져서 매니저님께 이 사실을 말씀드렸고, 추가합격자 조가 따로 있는데 그곳에서 시스템 오류로 누락이 된 것 같다는 말씀을 해 주셨다!

 

2. 이후 늦게나마 추가합격자 조로 이동하게 되었고, 추가합격조는 팀프로젝트 대신 사전캠프 기간에 배포되었던 '웹개발종합반'이라는 수업을 수강하는 방향으로 결정되었다.


복습을 위한 강의 판서


 

GIT

- CLI(명령어 기반 인터페이스) 기반

- 윈도우: git bash / mac OS: Terminal

- pwd: 현재 경로를 확인하는 명령어

 

상대 경로

- 현재 경로: .

- 이전 경로: ..

 

버전이란?

- 유의미한 변경사항이 생긴 경우

 

GIT이 관리하는 세 개의 공간

1. 작업디렉터리(workingtree) : 버전 관리의 대상이 위치하는 공간 (.git이 있는 디렉터리)

- 작업디렉터리에서 유의미한 변화를 스테이지에 저장하는 것: 'add'

 

2. 스테이지(index) : 깃이 관리하는 가상의 공간

- 다음 버전이 될 후보가 올라가는 공간

- 스테이지에서 저장소로 올리는 과정: 'commit'

 

3. 저장소(reposit) : 깃이 관리하는 가상의 공간

- 로컬 저장소: 내 컴퓨터 내에서 저장, 관리됨

- 원격 저장소: 인터넷상에서 저장, 관리됨

 

하나의 '버전'이 만들어지는 과정

1.작업 디렉터리 내에서 변경사항 생성

2.스테이지로 add

3.저장소로 commit

 

명령어 정리

- ls 현재 경로의 파일 및 폴더 모두 조회

- 숨김파일은 .으로 시작

- $ 1s : 숨김 / # 1s -a : 숨김파일 모두 보임

 

- cd <경로> : <경로>로 이동하기

- cd .. : 상위 디렉터리로 이동

- cd . : 현재 디렉터리로 이동

- cd ~: 홈 디렉터리로 이동

 

- cat 파일이름 : 파일의 내용 보기

 

- vi 파일명 : 파일 편집하기

ㄴ vi 모드에서 입력모드로 전환하기 : a / i 누르기

ㄴ 저장: 입력모드에서 빠져나와야 함 (esc 버튼 누름) - :w(저장) - :q(닫기)

ㄴ 저장은 :wq로 축약 가능함

 

- touch: 빈 파일 생성

 

- rm 제거

- mkdir 디렉토리를 생성

- rmdir 비어있는 디렉토리를 삭제

 

-pwd: 현재 디렉터리 이름을 확인

 

-git init : 로컬 저장소 만들기

-git status : 작업 디렉터리 상태확인

-git add <스테이지에 추가할 대상> : <스테이지에 추가할 대상> 스테이지에 올리기

-git add. : 모든 변경사항 스테이지에 올리기

-git remove 파일명 : 스테이지에서 삭제

 

-git commit : 자세한 커밋 메세지와 함께 커밋하기

ㄴ 커밋 메세지는 최대한 상세하고 정확하게 작성해야 함 (협업 시 유리함)

ㄴ 첫번째 줄: 제목 / 한 칸 띄우기 / 세 번째 줄~ : 본문입력

 

* 간단한 커밋메시지로 커밋(실무에서는 비추천함)

-git commit --message(-m)"<커밋 메세지>": 간단한 <커밋메세지>로써 커밋하기

 

-git log : git이 commit된 기록 목록을 조회

-git log --oneline : log의 양이 많은 경우, commit을 축약하여 목록을 보여줌

-git log --patch(-p): 커밋별 변경사항 목록 조회

 

-git diff : 최근 커밋과 작업 디렉터리 비교하기

-git diff --staged 최근 커밋과 스테이지 비교

-git diff <커밋> <커밋> : 커밋끼리 비교하기


 

'브랜치'란?

: 버전을 여러 개의 흐름으로 관리하는 방법 (버전의 분기)

 

브랜치를 사용하는 이유? = 브랜치가 없다면?

: 서로의 작업과 전혀 관련 없는 부분/같은 코드를 다르게 수정한 부분 혼재

: 일일이 수작업으로 합쳐야 함

: 때로는 서로의 코드를 합치다 실수가 생길 수도 있다.

 

브랜치 버전의 분기 관리하기

1. 브랜치를 나눈다

2. 각자의 브랜치에서 작업한다

3. (필요하다면)나눈 브랜치를 합친다

4. 같은 부분을 다르게 수정한 부분(충돌)만 보면 된다

 

브랜치의 이름: 최초의 브랜치 'master(main) 브랜치'

-가장 기본적인, 최초의 브랜치

 

명령어

- git branch: 현재 작업하고 있는 브랜치를 조회

- git branch 이름 : '이름'의 브랜치를 생성

- git branch -d 이름 : 브랜치 삭제 (체크아웃되어 있지 않은 브랜치만 가능)

- git checkout 브랜치이름 : '브랜치이름'으로 작업하겠다

 

- git checkout -b 브랜치이름 : '브랜치이름'을 만드는 동시에 그것을 작업하겠다

 

 

특정 브랜치에서 작업하기: HEAD와 체크아웃

 

HEAD

-현재 작업중인 브랜치의 커밋을 가리킨다

-기본적으로는 가장 최신 커밋을 가리킨다

 

체크아웃

-특정 브랜치에서 작업할 수 있도록 작업환경을 바꾸는 것

 

 

브랜치를 합친다 = 브랜치를 병합(Merge)한다

1. 빨리감기병합 : 새로운 커밋을 만들지 않고 병합하는 방법

ㄴ 브랜치가 뻗어나오고, 브랜치에 커밋이 쌓이고 병합되는 순간까지 master브랜치가 달라지지 않음

ㄴ 병합되는 순간 빨리감기하듯 foo브랜치에서 추가된 커밋을 반영함

 

2. 새로운 커밋을 만들며 병합하는 방법

-A브랜치에는 있는 게 B브랜치에는 없는 상황

-두 브랜치를 병합한 새로운 커밋이 생성된다

 

명령어: git merge 브랜치이름

 

 

충돌 해결하기

1.어떤 브랜치의 내용을 반영할지 직접 선별한다

2.선택된 내용 제외 모두 삭제한다

3.다시 커밋한다 (add - commit)