Hello It's good to be back ^_^

[ECC-프론트엔드 2팀] 1주차 스터디 본문

Study/프론트엔드

[ECC-프론트엔드 2팀] 1주차 스터디

HongYeon 2024. 9. 27. 19:45

교재: Do it! 5일 만에 끝내는 깃&깃허브 입문 1장 ~ 3장

공부한 페이지: pp. 12-123

실습한 내용: https://github.com/HongYeonLee/ECC-Frontend-Study

 

GitHub - HongYeonLee/ECC-Frontend-Study: ECC 49기 FW 프론트엔드 2팀 이홍연 스터디

ECC 49기 FW 프론트엔드 2팀 이홍연 스터디. Contribute to HongYeonLee/ECC-Frontend-Study development by creating an account on GitHub.

github.com


 

목차

  • 1-1 지옥에서 온 문서 관리자, 깃
  • 1-2 깃 설치하고 환경 설정 끝내기
  • 1-3 리눅스 명령 연습하기

 

  • 2-1 깃 저장소 만들기
  • 2-2 버전 만들기
  • 2-3 커밋 내용 확인하기
  • 2-4 버전 만드는 단계마다 파일 상태 알아보기
  • 2-5 작업 되돌리기

 

  • 3-1 브랜치 알아보기
  • 3-2 브랜치 만들기 및 이동히기
  • 3-3 브랜치에서 커밋하기
  • 3-4 브랜치 병합하기

1-1 지옥에서 온 문서 관리자, 깃

깃의 용도

1. 버전 관리하기 - 파일을 수정할 때 마다 새로운 버전이 나온다. 이를 편히 관리 하기 위한 것이 바로 깃 (Git)

2. 백업하기 - 원격 저장소에 백업하기

3. 협업하기 - 다른 사람들과 같은 파일을 작업하기

 

깃 프로그램의 종류

깃허브 데스크톱 - 복잡한 깃 사용법을 GUI를 이용해 구현, 쉬우나 기본 기능 위주

토터스깃 - 윈도우 탐색기에 추가되는 윈도우 전용 프로그램

소스트리 - 고급 기능까지 사용 가능

 

커맨드 라인 인터페이스 (CLI)

터미널 창에 직접 명령어를 입력해서 아용하는 방식, 깃 배시 따로 실행 필요

-> 불편해서 IDE 편집기에서 CLI방식으로도 사용 가능

 

1-2 깃 설치하고 환경 설정 끝내기

사용자 정보 입력

git config --global user.name "이름"

git config --global user.email "이메일"

 

1-3 리눅스 명령 연습하기

깃 기본 명령어

pwd : 현재 디렉토리 위치 보기 (print working directory)

ls : 현재 디렉토리에 어떤 파일들이 있는지 보여주기 (list)

ls -l : 현재 디렉토리에 있는 파일들의 상세 정보 보여주기 (대문자 L도 가능)

ls -a : 숨겨진 파일도 전부 표시 (all)

ls -r : 파일 정렬 순서를 거꾸로 표시 (reverse)

ls -t : 파일 작성 시간순(내림차순)으로 표시 (time)

옵션들을 2개 이상 사용할 수도 있다 ex. ls -al

clear : 터미널 창 깨끗하게 전부 지우기

cd : change directory

cd .. : 상위 디렉토리로 이동

cd 디렉토리 이름 : 해당 디렉토리로 이동

cd ~ : 처음 디렉토리 (홈)로 이동

cd . : 현재 작업 중인 디렉토리

cd 드라이브이름: -  해당 드라이브로 이동

mkdir 디렉토리 이름 :  디렉토리를 생성 (make directory)

rm 디렉토리 이름 : 디렉토리 삭제 (remove) (rm 명령어는 휴지통으로 들어가지 않고 즉시 삭제되니 조심하자)

rm -r 디렉토리 이름 : 해당 디렉토리의 하위 디렉토리와 파일도 전부 삭제

exit : 터미널 종료


 

2-1 깃 저장소 만들기

git init : 현재 디렉토리를 레포지토리로 사용하기 위해 초기화 (initialize) -> .git 이라는 숨겨진 파일이 해당 디렉토리에 생성된다.

 

2-2 버전 만들기

깃의 핵심은 버전 관리 시스템

파일의 이름은 그대로 유지하면서 파일의 변경 내용과 시점을 저장할 수 있다. 버전마다 작업한 내용을 확인할 수도 있고 해당 버전으로 되돌릴 수도 있다

 

원리

 

작업트리 : 내가 작업하고 있는 공간, 눈에 보이는 디렉터리

스테이지 : 버전으로 만들 (커밋할) 파일이 대기하고 있는 공간으로 작업 트리에서 수정한 파일중 버전으로 만들고 싶은 파일만 스테이지로 넘겨주면 된다

저장소  : 스테이지에 대기하고 있던 파일들을 버전으로 만들어 저장하는 곳

작업트리에서 작업한 파일을 add 명령을 이용해 스테이지에 넣는다

스테이지에 있는 파일을 commit 명령을 이용해 저장소에 버전을 만든다

 

git status : 현재 브랜치, 파일 변경 사항, 커밋할 내용이 나온다

git add 파일명 : 파일을 스테이지(.git/index)에 올린다

git commit -m "커밋메세지" : 스테이지에 올라간 파일을 커밋한다

git log : 커밋한 기록을 보여준다. 커밋을 만든 사람, 시간, 커밋 메시지 등

git commit -am : 이전에 한번 커밋한 적 있는 파일은 스테이징과 커밋을 한번에 할 수있다

 

2-3 커밋 내용 확인하기

 

커밋 해시 (깃 해시) : 커밋을 구별하는 고유의 아이디

(HEAD -> main) : 해당 버전이 최신 버전이라는 의미

git diff : 작업 트리 <-> 스테이지 <-> 저장소 간의 파일의 차이점을 보여준다

 

2-4 버전 만드는 단계마다 파일 상태 알아보기

git add . : 작업 트리에 있는 수정 파일들을 모두 스테이지에 올릴 수 있다

git log --stat : 각 커밋마다 어떤 파일이 관련되어있는지 보여준다 (statics), 로그가 너무 길면 엔터를 눌러 하나씩 볼 수 있고 로그에서 빠져나가고 싶으면 Q를 누르면 된다

git ignore 파일

git commit --amend : 방금 커밋한 메세지 수정

 

2-5 작업 되돌리기

git restore "파일명" : 작업 트리에서 수정한 내용을 되돌리기

git restroe --staged : 스테이징된 모든 파일 되돌리기

git restore --staged "파일명" : 스테이징된 특정 파일 되돌리기

git reset HEAD^ : 최신 커밋 파일 되돌리기 (작업트리에만 남게됨)

git reset --soft HEAD^ : 최신 커밋을 되돌리는데 스테이징에는 남게됨

 

git reset --hard 커밋해시 : 특정 커밋으로 되돌리고 그 이후의 커밋은 전부 삭제

git revert .커밋해시 : 특정 커밋을 revert 하고 그 이후의 커밋은 그대로 냅둠

 


 

3-1 브랜치 알아보기

 

 

3-2 브랜치 만들기 및 이동하기

git branch : 브랜치 확인 및 현재 브랜치

git branch 브랜치이름 : 해당 브랜치 이름으로 브랜치 만들기

git log --oneline : 깃 로그를 한 줄에 한 커밋씩 보여준다

git switch(checkout) 브랜치이름 : 해당 브랜치로 전환한다

 

3-3 브랜치에서 커밋하기

git log --branches : 브랜치마다 최신 커밋을 볼 수 있다 (--oneline 과 함께 사용 가능)

git log --branches --graph : 브랜치와 커밋의 관계를 그래프로 보여준다 (--graph 단독으로도 사용 가능)

git log --branches --all : 모든 브랜치의 현재 커밋 상태를 보여준다 (--graph와 함께 사용 가능)

 

git log 브랜치A..브랜치B : 브랜치A를 기준으로 브랜치B와 비교한다 (브랜치A에는 없고 브랜치B에만 있는 커밋을 보여준다)

 

3-4 브랜치 병합하기

git merge 병합할 브랜치 이름 : A 에 B를 병합시키려면 A 브랜치로 이동후 브랜치 이름에 B를 적어준다

 

 

만약 서로 다른 브랜치에서 같은 파일의 같은 부분을 수정하여 병합시에 충돌이 날 경우

 

======를 기준으로 위 부분은 현재 브랜치에서 수정한 내용, 아래 부분은 병합하는 브랜치에서 수정한 내용을 의미한다.

충돌되는 부분을 해결하기 위해 병합 편집기에서 확인 버튼을 누른다.

 

 

[현재 수락]  : 현재 브랜치 (main)의 수정 내용을 적용한다는 의미

[수신 수락]  : 병합할 브랜치에서 수정한 내용을 적용한다는 의미

 

 

두 수정사항을 전부 적용할 수도 있다

 

git branch -d 브랜치이름 : 해당 브랜치 삭제 (delete), 만약 해당 브랜치가 메인에 병합되지 않은 경우 오류 메세지가 뜨며 -D를 사용시 강제로 브랜치를 사용할 수 있다.

브랜치는 삭제한다고 해서 실제로 사라지지는 않으며 같은 이름으로 다시 브랜치를 만들시 내용을 복구할 수 있다.

 

cherry-pick 브랜치 병합 : 브랜치의 특정 커밋만 병합할 수 있다

일반적인 병합
cherry-pick 병합

 

git cherry-pick 해당 커밋 해시 : main 브랜치로 이동 후 topic 브랜치에서 커밋한 t2의 해시를 넣어 명령어를 수행하면 main브랜치에는 t2의 커밋 내용만 반영된다

 

여러개의 깃 명령을 ;으로 구분해서 사용할 수도 있다

touch 파일명 : 해당 파일 이름으로 빈 파일을 만든다