Git

코끼릭·2022년 3월 22일
0

IT

목록 보기
1/24
post-custom-banner

주요 개념

분산 버전 관리 시스템

git은 중앙 저장소에 접근해야 작업을 할 수 있는 중앙 집중식 버전 관리와 다르게 개별적인 저장소에 복제되어 저장되고 개발자는 분산된 저장소에서 개별적인 작업을 할 수 있는 것이 특징이다.

로컬 저장소

원격 저장소에 저장된 작업물을 로컬 저장소로 복제하여 개별적인 작업을 할 수 있는 저장소를 의미한다.

원격 저장소

분산된 각 저장소의 변경사항들이 반영된 공유 저장소로 원격 저장소의 작업물이 복제된 로컬 저장소에서 작업한 뒤 변경된 작업 사항을 원격 저장소에 반영(git push)하고 원격 저장소에서 새롭게 추가된 작업 사항을 로컬 저장소에 반영(git pull)하는 것을 통해 분산된 각 저장소와 원격 저장소의 작업 내역 간의 동기화가 이뤄진다.

commit

git에서 관리하는 변경된 작업 단위로 각 커밋은 고유한 해쉬번호와 어떤 작업이 변경되었는지에 대한 설명을 가지고 있고 git에서 관리되는 작업들은 커밋 단위로 버전 관리할 수 있다. 사용자는 변경된 작업 단위를 나누기 위해 여러 커밋을 생성할 수 있다.

Staged

git의 버전 관리 단위인 커밋의 변경 사항으로 추가하기 위해서는 사용자는 변경된 파일들을 Staged 상태로 만들어야 한다. Staged 상태인 파일들은 커밋에 추가된 이후 변경사항 감지 대상이 되고 최신 커밋에서의 변화가 감지될 경우 Unmodified에서 Modified로 상태가 변경되면서 git status를 통해 변경된 파일로 확인할 수 있다.

Branch

Git pull

원격 저장소에 추가된 새로운 커밋을 로컬 저장소에 반영시키는 동작으로 git의 로컬 저장소로 설정을 한 후 원격 저장소의 작업물들을 clone 명령어를 통해 복제할 수 있다.

git init
git clone {repo url} {clone dir}
git pull {remote repo} {branch}

Git push

로컬 저장소에 추가된 새로운 커밋을 원격 저장소에 반영시키는 동작으로 add 명령어를 통해 커밋에 포함시킬 변경 사항들을 Staged 상태로 만든 후 commit 명령어를 실행하면 로컬 저장소에 새로운 커밋이 추가되고 이 변경사항을 원격 저장소에도 반영할 수 있도록 push 명령어를 실행한다.

git add remote {remote repo name} {repo url}
git add . 
git commit -m “커밋을 설명하는 간략한 메세지”
git push {remote repo} {branch}

Git reset

작업물의 가장 최신 커밋을 가리키는 HEAD가 과거의 커밋을 가리키게 하는 명령어로 작업 내역에 대한 특정 커밋으로의 복원을 동작하는 명령어이다. —soft 옵션을 사용할 경우 커밋은 삭제되지만 커밋의 포함된 변경 내역들이 스테이징에 남아있는 상태로 로컬 저장소에서는 변경된 작업 내역을 확인할 수 있지만 —hard 옵션을 사용하게 되면 커밋과 커밋의 포함된 변경 사항도 같이 삭제된다.

git reset --soft HEAD~1 // 최신 커밋의 이전 커밋으로 복원 (변경 사항들은 스테이징에 남김)
git reset --hard HEAD~2 // 최신 커밋의 이이전 커밋으로 복원 (변경 사항들 삭제)

Git stash

스테이징에 올려진 작업 변경 사항을 다른 곳에 보관하는 명령어로 실행하게 되면 작업 내역이 HEAD가 가리키고 있는 가장 최신 커밋 사항으로 작업 내역이 복원되고 git stash apply 명령어를 사용하면 다시 작업 변경 사항을 로컬에 반영할 수 있다.

git stash // 스테이징에 올린 변경 사항 이동
git stash apply // 스테이징 변경 사항 반영
git stash clear // 저장된 stash 내역 삭제

Pull Request

main 브랜치에서 feature 브랜치를 만들어 개별 작업한 후 사용자는 feature 브랜치에서 생성한 새로운 커밋들을 main 브랜치에 반영하기 전 문제 없을지 확인 받은 후 반영하게 되는데 이 과정을 pull request라고 한다. 원격 main 브랜치의 추가된 최신 커밋들이 feature 브랜치에도 반영되어 있어야 충돌없이 main 브랜치에서 feature branch를 pull 할 수 있기 때문에 pull request를 요청하기 전 main 브랜치의 최신 작업 커밋이 반영하기 위한 선행 작업을 다음과 같이 진행해야 한다.

  1. pull request를 보내려고 하는 main 브랜치를 업데이트한다.
    git checkout main // 로컬 main 브랜치로 이동
    git pull origin main // 원격 main 브랜치를 로컬에도 반영
  2. feature 브랜치의 커밋 상태를 main 브랜치 상태와 동일하게 업데이트한다.
    git checkout feature // 로컬 feature 브랜치로 이동
    git pull main // 최신 커밋 상태 반영
  3. 충돌된 파일을 직접 수정
  4. Merge commit을 날린 다음 원격 저장소 feature 브랜치 업데이트
    git add .
    git commit -m "merge"
    git push origin feature
  5. PR 승인을 받게 되면 원격 저장소의 feature 브랜치 작업이 main 브랜치에도 반영된다.

Git

profile
ㅇㅅㅇ
post-custom-banner

0개의 댓글