Upstage AI

[강의] Git

deepdoodles 2024. 12. 14. 20:13

 

이틀 동안 Git 전반적인 내용에 대해 학습했다. 첫날에는 Shell Command와 Vim 등 Git CLI 사용에 필요한 도구와 기본적인 Git 활용법을 익혔다. 둘째 날에는 간단한 프로젝트가 주어졌고, 팀원들과 함께 GitHub를 사용해 실제 프로젝트를 진행하며 협업하는 과정을 실습했다.

 

 

파일 및 디렉터리 관련 명령어

ls

  • $ ls : 디렉터리 내 파일 및 폴더 나열
  • $ ls -l : 상세 정보 포함하여 나열
  • $ ls -a : 숨겨진 파일 포함하여 나열
  • $ ls -al : 숨겨진 파일과 상세 정보 포함하여 나열

cd

  • $ cd Documents : 문서 디렉터리로 이동
  • $ cd .. : 상위 디렉터리로 이동
  • $ cd ~ : 홈 디렉터리로 이동

mkdir

  • $ mkdir dev : dev 디렉터리 생성

pwd

  • $ pwd : 현재 디렉터리 경로 출력

rm

  • $ rm -r dev : dev 디렉토리 삭제
  • $ rm -rf dev : dev 디렉토리 강제 삭제
  • rm -r은 쓰기 보호 파일을 삭제하기 전 사용자에게 확인 요청, rm -rf는 쓰기 보호 파일도 사용자 확인 요청 없이 삭제

 

파일 작업 관련 명령어

touch

  • $ touch file.md : file.md 새 파일 생성

mv

  • $ mv file.md temp/ : file.md 파일을 temp 디렉터리로 이동
  • $ mv file.md file_copy.md : file.md 파일을 file_copy.md로 이름 변경

cp

  • $ cp file.md file_copy.md : file.md 파일 복사
  • $ cp -r folder1/ folder2/ : folder1 디렉터리 복사

cat

  • $ cat file.md : file.md 파일 내용 출력

head / tail

  • $ head -n 10 file.md : file.md 파일의 처음 10줄 출력
  • $ tail -n 10 file.md : file.md 파일의 끝 10줄 출력

 

 

Vim

  • Bill Joy의 Vi의 확장판 (Vi IMproved)
  • Unix 기반의 편집기 Vi를 개선한 텍스트 편집기
  • 코드 작성, 문서 편집, 설정 파일 관리 등 다양한 작업에 사용
  • 모드 기반의 마우스 입력 대체
    • normal mode(default): 텍스트 탐색 및 명령 실행
    • insert mode(i): 텍스트 입력 및 수정
    • visual mode(v): 텍스트 블록 선택
    • command-line mode(:): 파일 저장, 패턴 검색, 필터, 줄이동, 종료 등의 액션 수행

 

Set Configuration

사용자 이름 설정 $ git config --global user.name "{username}"

 

사용자 이메일 설정 $ git config --global user.email "{emailaddr}"

 

기본 텍스트 편집기 설정 $ git config --global user.editor "vim"

(Nano: nano, VSC: code --wait, Notepad++: notepad++.exe)

 

Git 출력 방식 변경 (기본값: less) $ git config --global user.pager "cat"

  • less: 화면을 넘겨가며 확인
  • cat: 출력 결과 터미널에 그대로 표시

현재 설정된 Git 환경 정보 확인 $ git config --list

설정 파일 직접 수정 $ vi ~/.gitconfig

 

How to Start

  1. 원격 저장소(GitHub, GitLab 등)를 로컬 컴퓨터에 복제
    $ git clone {username/repo-addr}
  2. 복제한 저장소의 디렉토리로 이동
    $ cd {repo-addr}
  3. 저장소 내의 파일 수정
    $ vi README.md
  4. 현재 작업 디렉토리의 상태 확인 (변경, 추가 삭제 상태 표시)
    $ git status
  5. 수정된 파일을 스테이징 영역에 추가 (커밋 준비 단계)
    $ git add README.md
  6. 스테이징된 파일을 저장소에 커밋 (변경사항 기록하는 스냅샷)
    $ git commit
  7. 로컬 저장소에서 만든 커밋을 원격 저장소로 푸시
    $git push origin main

Conventional Commits

  1. commit의 제목은 commit을 설명하는 문장형이 아닌 구나 절의 형태로 작성
  2. Importance of Capitalize
  3. prefix 달기
  • feat: 기능 개발 관련
  • fix: 오류 개선 혹은 버그 패치
  • docs: 문서화 작업
  • test: 테스트 관련
  • conf: 환경설정 관련
  • build: 빌드 작업 관련
  • ci: Continuous Integration 관련
  • chore: 패키지 매니저, 스크립트 등
  • style: 코드 포매팅 관련
  • !: Breaking Change(기존 코드와 호환되지 않은 변경 사항)

참고) https://www.conventionalcommits.org/ko/v1.0.0/

 

Conventional Commits

커밋 메시지에 사용자와 기계 모두가 이해할 수 있는 의미를 부여하기 위한 스펙

www.conventionalcommits.org

 

 

 

Characteristics of Git

  • 단순한 구조와 빠른 속도
  • 분산형 저장소 지원
  • 비선형적 개발(수천개의 브랜치) 가능
  • 오프라인 작업 가능
  • GitHub, GitLab, Bitbucket 같은 클라우드 기반 협업 플랫폼 지원


source: https://docs.getdbt.com/docs/collaborate/git-version-control"

 

Pros of Git

  • 소스코드 주고받지 않고도 동시 작업 가능
  • 수정 내용은 commit 단위로 관리하여 배포는 물론 원하는 시점으로 Checkout 가능
  • 새로운 기능 개발을 Branch로 관리하여 성공적으로 개발이 완료되면 Main Branch에 Merge하여 반영
  • 인터넷이 연결 없이도 개발 가능

 

 

Git Workflow


source: https://cloudstudio.com.au/2021/06/26/git-command/"

 

 

Local

1. Working Directory

  • 파일을 수정하거나 작업하는 영역
  • 수정된 파일을 Untracked(추적되지 않음) 상태
  • 수정 후, 파일을 Staging Area로 올리기 위해 git add 명령어 사용

2. Staging Area

  • 커밋 준비가 된 파일들이 올라가는 공간
  • git add를 통해 특정 파일이나 모든 파일을 스테이징할 수 있음
  • 이후 git commit 명령으로 파일을 Local Repository로 저장

3. Local Repository

  • 로컬에서 관리되는 Git 저장소
  • git commit으로 파일의 변경 사항을 여기에 저장하며 commit 히스토리가 축적됨
  • 원격 저장소로 변경 사항을 업로드하려면 git push를 사용

Remote

4. Remote Repository

  • GitHub, GitLab 같은 서버에 있는 저장소
  • 협업을 위해 여러 개발자들이 접근 가능
  • 로컬에서 원격 저장소로 데이터를 보내기 위해 git push를 함
  • 원격 저장소에서 데이터를 가져오기 위해 git pull이나 git fetch 사용

System is not Service

  • Git은 System으로 버전 관리를 위한 도구
  • Remote Repository는 Service로 Git의 데이터를 저장하고 협업 및 관리 기능을 제공