Git의 명령어와 작업 영역

wonway·2024년 3월 18일
0
post-thumbnail

Git의 명령어와 작업 영역을 연결하여 이해하기 위해 두 질문에 대해 답변을 작성함

  1. git add, commit, push, pull 명령어를 git의 작업영역과 관련지어 설명하기

개념

git의 작업 영역은 코드의 버전 관리를 위한 4가지로 구분할 수 있다.

작업영역 4가지

  1. working_directory
  • 코드를 작성하는 작업 공간
  • git 명령을 실행하기 전에는 변경 사항을 추적하지 않음
  1. staging_area
  • working_directory에서 변경된 파일을 임시로 저장하는 공간
  • add
  1. local_repository
  • 커밋된 변경사항이 저장되는 공간
  • commit
  1. remote_repository
  • 코드 공유, 협업을 위한 온라인 상의 원격 저장소
  • push, pull

명령어

git add

working_directory에서 변경된 파일을 staging area에 저장한다.

git commit

staging_area에 추가된 변경사항들을 메세지와 함께 local_repository에 저장한다.

git push

local_repository에서 remote_repository 업로드한다.

git pull

remote_repository에서 local_repository로 가져온 뒤 working_directory로 덮어씌워지며 업데이트된다.

답변

  • working_directory에서 코드를 작성한다.
  • git add 명령어로 작업의 변경사항을 staging_area에 임시로 저장한다.
  • git commit으로 변경사항과 메세지를 local_repository에 저장한다.
  • git push로 local_repository에서 remote_repository로 업로드한다.
  • git pull은 remote_repository에서 최신 변경사항을 먼저 local_repository로 파일을 다운로드하고 이후 이 변경사항을 working_directory에 적용하여 개발자가 작업하는 영역에 코드가 최신상태로 업데이트된다.

  1. git reset의 세 가지 옵션과 각각의 차이를 설명하기

git reset이란?

이 명령어는 git의 HEAD를 지정된 커밋으로 이동하는 명령어이다.
최근 커밋을 리셋하고 다시 커밋할 때 사용한다.
명령어 문법은 다음과 같다.
git reset --soft HEAD~1
이전 커밋으로 돌아간다.
HEAD~2, HEAD~3, HEAD~4...여러 단계까지 되돌릴 수 있다.

git reset의 옵션

위에서 --soft라고 적힌 부분이 옵션이다.
옵션은 git의 작업 영역 3가지 중 어디어디에 reset을 적용할 것인지 조절한다.

git reset의 3가지 옵션

  1. --soft
  2. --mixed
  3. --hard

-soft

  • 동작
    • local repository의 HEAD를 지정된 커밋으로 이동
  • 용도
    • 작업사항은 유지하고 커밋만 다시 할 때 사용한다.

-mixed

  • 동작
    • local repository의 HEAD를 지정된 커밋으로 이동
    • staging area의 내용을 지정된 커밋의 상태로 되돌림
  • 용도
    • 기존 작업사항은 유지된 상태에서 git add부터 다시 할 때 사용한다.

-hard

  • 동작
    • local repository의 HEAD를 지정된 커밋으로 이동
    • staging area를 지정된 커밋으로 되돌림
    • working directory를 지정된 커밋으로 되돌림
  • 용도
    • 커밋을 완전히 취소하고 변경 사항도 삭제하여 컴퓨터에 작업 중인 코드까지 전부 지정된 커밋으로 되돌린다.

요약
이미지 출처 : 코드잇 스프린트 강의

답변

  • 각 옵션은 작업 영역에 미치는 범위의 차이가 있다.
  • --soft는 repository의 HEAD만 이동한다.
  • --mixed는 repository의 HEAD 이동 + staging area의 변경사항을 지정된 커밋으로 변경한다.
  • --hard는 repository의 HEAD 이동 + staging area의 변경사항을 지정된 커밋으로 변경 + working directory도 지정된 커밋으로 변경한다.
profile
문제를 컴퓨터로 해결하는 데서 즐거움을 찾는 프론트엔드 개발자

0개의 댓글

관련 채용 정보