한이음 프로젝트 - Git 강의

DaY·2021년 7월 7일
1

한이음

목록 보기
12/15
post-thumbnail

Git

  • 프로젝트의 버전 관리를 하기 위해 사용하기 프로그램
  • 여러 개발자와의 협업
  • git 기반의 저장소 서비스 > GitHub, GitLab

commit

  • 특정 버전을 저장하는 것. 작업 버전 이동

working directory

  • 실제로 다루고 있는 프로젝트 디렉토리

staging area

  • 특정 버전으로 관리하고 싶은 파일을 모아두는 장소

repository

  • 특정 시점의 staging area의 모습으로 커밋으로 남기면, 그 커밋들이 저장되는 영역

working directory -git add .-> staging area -commit-> repository

명령어

git init

  • git으로 버전 관리를 할 수 있는 상태 변환
  • .git 디렉토리 생성
  • 버전관리를 위한 것들 알아서 관리

git config user.name “{user_name}”
git config user.email “{user_email}”

  • git 사용자 설정

git log

  • commit log / commit history 확인
  • q 입력으로 탈출

git diff {commit_id} {commit_id}

  • 커밋 비교
  • id는 앞 4자리만 입력 가능

git reset — hard HEAD@{number}
git reset —hard {commit_id}

  • 해당 id의 커밋 모습으로 변경
  • HEAD가 가리키는 커밋 모습으로 working directory 변경
    • HEAD : 현재 내가 위치해있는 커밋을 가리키는 식별자
    • hard 옵션 : working directory, staging area, repository 모두 해당 커밋 모습으로 변경 (위험)
    • mixed 옵션 : staging area, repository만 해당 커밋 모습으로 변경. git add . -> 커밋
    • soft 옵션 : repository 만 해당 커밋 모습으로 변경. 바로 커밋 가능
    • mixed / soft -> 커밋 로그 수정. 즉, 제대로된 커밋만 남기기 위함

git status

  • git의 상태 구체적으로 확인

git reflog

  • reference log
  • HEAD가 가리켰던 커밋 기록을 모두 보여주는 명령어
  • 가장 최근 커밋 HEAD{0}

GitLab

외부 저장소 서비스 : GitHub, GitLab, Bitbucket, ...

명령어

git remote add origin {project_url}

  • 내 컴퓨터에서 외부 저장소에 관한 작업 수행
  • url이 가리키는 외부 서버의 프로젝트를 원격 저장소로 지정
  • url 이름을 origin으로 지정

git push -u origin master

  • 프로젝트 내용을 origin이 가리키는 원격 저장소의 프로젝트로 업로드
  • -u : --set-upstream 내 컴퓨터의 master 브랜치가 깃랩 서버의 master 브랜치를 HEAD로 지정

git clone {project_url}

  • url이 가리키는 원격 저장소의 프로젝트를 디렉토리 형태로 가져오는 방법

git pull

  • Gitlab 프로젝트의 새로운 커밋을 내 컴퓨터로 이동
  • 원격 저장소의 최신 커밋 반영

Branch

  • 특정 커밋을 가리키는 포인터
  • 하나의 프로젝트에서 서로 다른 개발 흐름을 병렬적으로 가져가기 위해 사용

명령어

git branch {branch_name}

  • branch 생성

git checkout {branch_name}

  • HEAD가 가리키는 branch 변경

git log --all --graph

  • --all : HEAD가 가리키는 Branch 뿐만 아니라, 모든 Branch 확인
  • --graph : Branch와 commit의 관계 그래프 형식으로 표현

git merge {branch_name}

  • HEAD가 가리키는 Branch에 {branch_name}에서 했던 작업 병합
  • Fast-Forward Merge : 새로운 커밋 생성이 아닌, 당겨져 오는 merge

2 가지의 merge 종류

  • 다른 브랜치에서 같은 파일 수정 및 커밋 시 conflict 발생 -> 코드 수정 & commit 후 merge

Merge Request

  • Merge Commit
    • Commit History 모양에 상관없이 항상 Merge 허용
    • 항상 새로운 Commit이 생성되며 Merge

  • Merge Commit with Semi-linear History
    • Merge Request 전송 시, Fast-forward Merge가 가능할 때만 Merge
    • 항상 새로운 Commit이 생성되며 Merge
    • rebase 수행

  • Fast-forward
    • 새로운 커밋 생성이 아닌, 당겨져 오는 merge

git remote add upstream {원본 project url}

  • 원본 프로젝트를 updtream이란 이름으로 원격저장소 지정

git pull upstream develop

  • 원본의 develop 브랜치의 최신 커밋 반영

git merge upstream/develop

  • 원본의 develop 브랜치 최신 커밋 가져오기

git log --all --graph --oneline

  • 커밋 상세 정보 생략된 커밋 히스토리 확인

git rebase {branch 이름}

  • 헤당 branch의 최신 커밋으로 시작점 재설정

0개의 댓글