[git] git 기초

jaylight·2020년 12월 6일
0

Git

  • 분산 버전 관리 시스템(Version Control System)
    • 프로젝트 파일의 변경 사항을 추적하는 시스템으로, 변경사항 기록 / 프로젝트 중심 협업에 활용
  • 개발자는 별도의 프로젝트 버전을 본인 컴퓨터에 보유 → 추후 병합하여 기준이 되는 버전의 프로젝트에 적용

Git

[Guide] Installation & Settings

  • Git은 주로 Command-Line Interface를 통해 활용

GUI 버전이 있긴하지만, 사용성 면에서 CLI가 낫기 때문에 활용도가 떨어짐

  • macOS의 경우 Homebrew를 활용하여 git을 설치
brew install git
  • 설치 후 git이 정상적으로 설치되어있는지 여부와 버전을 확인
git --version
  • 본인의 이름 & 이메일 정보를 등록
git config --global user.name "이름"
git config --global user.email "이메일"

Repositories (저장소)

  • Git으로 관리하는 프로젝트 저장소

  • Git Repository에는 Local과 Remote 두 가지 종류가 있음

    1. Local Repository: 본인의 컴퓨터에 저장된 Local 버전의 프로젝트 저장소

    2. Remote Repository: 외부 (일반적으로 원격 서버) 버전의 프로젝트 저장소

      팀 작업에 활용하며, 프로젝트 코드 공유, 다른 사람의 코드 리뷰, 로컬 버전 병합 및 변경사항 적용이 가능

[Guide] Initializing a repository

  • 현재 위치한 프로젝트 폴더에 새 저장소(repository)를 만들고 git으로 프로젝트 관리를 시작
git init

위 명령어를 통해 프로젝트 폴더 내 숨겨진 .git 디렉토리를 생성하며, 해당 저장소에 대한 모든 변경사항을 추적/관리

Staging and committing code

  • commit: 프로젝트의 현재 상태를 나타내는 체크포인트

    현재 버전의 코드를 commit에 저장하며, commit 간 앞뒤로 이동하여 프로젝트 코드의 변경사항을 확인

일반적으로 commit을 남기는 시점: 특정 내용, 기능 추가 또는 수정사항 적용 이후

[Guide] Checking the status

  • Repository의 현재상태를 확인
git status

파일의 추가/삭제, 변경 등에 관한 이력을 조회

위 명령어로 git에서 관리(추적)되지 않는 파일이 있다면, 해당 파일들을 staging area로 추가할 수 있으며,
모든 파일이 git으로 관리되고 있다면 위 명령어를 통해 모든 변경 사항을 확인하고, 커밋을 남기기 위해 staging area로 추가

[Guide] Staging Files (Staging area에 파일 추가하기)

  • 특정한 원하는 파일들을 staging area로 추가
git add file.js
  • 여러 개의 원하는 파일들을 staging area로 추가
git add file.js file2.js file3.js
  • 모든 파일들을 staging area로 추가
git add .

[Guide] Making Commits

  • staging area에 있는 파일들을 커밋에 남김
git commit -m "Commit message"

큰 따옴표 안에 repository에 커밋하는 변경사항을 설명하는 커밋 메세지를 남겨 커밋의 내용을 식별하며,
위 명령어로 커밋을 하는 동시에 커밋에 대한 세부 내용이 표시됨

새 커밋을 남기려면 staging area에 파일을 추가하고 커밋을 남기는 프로세스를 반복

[Guide] Commit history

  • 프로젝트의 모든 커밋 내역을 조회
git log

위 명령어를 통해 log를 조회하며, [작성자, hash값, 날짜와 시간, 커밋 메세지 등] 커밋에 대한 자세한 정보가 표시

  • 특정 커밋 시점으로 코드 되돌리기
git checkout <commit-hash>

<commit-hash>git log를 통해 조회된 커밋의 실제 hash 값을 넣어줌

[Guide] Ignoring Files

  • staging area에 추가하고 싶지 않거나, git을 통해 관리하지 않아도 되는 파일이 있다면 .gitignore 파일을 생성하여 해당하는 파일명과 폴더명을 나열

    각 파일, 폴더는 새로운 줄에 입력

// 예시

.DS_*
*.log
logs
**/*.backup.*
**/*.back.*
node_modules
bower_components

Branches

  • 독립적으로 어떤 작업을 진행하기 위한 개념
  • 각각의 브랜치는 다른 브랜치의 영향을 받지 않으므로, 여러 작업을 동시에 진행할 수 있음
  • 독립적 작업을 진행하고 그 결과를 하나로 모아 나감

Process

  1. 처음 git을 생성할 경우 master라는 이름의 브랜치를 생성
    새로운 저장소에 새로운 파일을 추가하거나 파일 내용을 변경하여 그 내용을 저장(커밋)하면
    모두 master라는 이름의 브랜치를 통해 처리함
  2. main 브랜치에 자신의 작업 전용 브랜치를 생성하여, 다른 사람의 작업에 영향을 주고 받지 않도록 함
    새로운 브랜치를 사용할 것으로 선언(checkout)하면, 그 이후의 작업은 해당 브랜치에서 이루어짐
  3. 각 브랜치에서 개별적인 작업을 진행
  4. 메인 브랜치에 자신의 브랜치의 변경 사항을 적용

Pros

  • '작업 단위'(브랜치)로 그 작업의 기록을 지속적으로 남기므로, 문제가 발생할 경우 원인이 되는 작업을 찾아내거나 그에 따른 대책을 마련하기 쉬워짐

[Guide] Creating a new branch

  • 새로운 브랜치 생성
git branch <new-branch-name>

새로 만들어진 브랜치는 현재 프로젝트 코드를 반영하여 생성

보통 development 브랜치를 별도로 만들어서 새로운 기능 테스트, 버그 확인을 수행한 후,
최종적으로 master(main) 브랜치에 병합하여 안정성을 높일 수 있음

[Guide] Changing Branches

  • 다른 브랜치로 이동
git checkout <branch-name>

원하는 브랜치로 이동하면, 해당 브랜치의 마지막 커밋 내용이 작업 트리에 펼쳐짐

추후 남기는 커밋은 전환한 브랜치에 추가되며, 해당 브랜치에만 영향

  • 브랜치 생성과 동시에 생성한 브랜치로 이동
git checkout -b <new-branch-name>
  • 프로젝트 내 모든 브랜치 확인
git branch

[Guide] Merging Branches

  • 다른 브랜치(<branch-name>)를 현재 브랜치에 병합
git merge <branch-name>

[Guide] Deleting a branch

  • 브랜치 삭제
git branch -d <branch-name>

0개의 댓글