Git & Github

김준영·2023년 2월 16일
1

Code States

목록 보기
1/33

Git & Github


Git

소스 코드 기록을 관리하고 추적할 수 있는 버전 관리 시스템

쉽게 말해 파일을 관리해주는 프로그램이다.

  • 파일의 변경 사항을 추적하며, 사용자가 각 파일의 버전을 관리할 수 있게 도와준다.
  • 파일을 백업할 수 있게 해준다.
  • 협업자들과 함께 파일을 공유하고, 각자의 작업물을 취합할 수 있게 해준다.

Git이 관리하는 디렉토리에 어떤 문서를 만들면 Git으로 그 분서의 버전을 관리할 수 있다.

이전버전으로 돌아가야 할 필요가 생기면 Git이 기록해준 내용을 확인하고 이전 버전을 선택해 되돌릴 수 있다.

또한, 특정 버전에서 두 버전으로 분기한 후, 분기한 두 버전을 각각 다르게 수정할 수 있다.

Git은 작업물을 온라인 원격 저장소에 백업할 수 있도록 백업 기능을 제공한다.

Git은 여러 작업자가 하나의 작업물의 다른 부분을 각자 작업할 때, 작업물을 공유하고 취합할 수 있게 도와준다.

Git 영역

  • 온라인 : Remote repository
  • 로컬 : Work space(작업 공간), Staging area(스테이징 영역), Local repository(지역 저장소)

Work space


Git의 세 가지 영역 중 하나로, Working tree or Work tree라고도 하며, 사용자가 눈으로 볼 수 있는 디렉토리 자체를 의미한다.

Git은 Work space를 자동으로 스캔한다.

git status로 파일 상태를 알 수 있다.

파일의 상태

  • Untracked
  • Tracked
    • Unmodified, Modified, Staged

Tracked 상태인 파일들은 수정되었을 때 Git이 파일의 변경 내용을 감지하지만, Untracked 상태인 파일들은 파일의 내용을 변경하여도 Git이 파일의 내용 변경을 감지하지 못함.

Untracked -> Commit -> Tracked

  • Unmodified : 파일의 수정이 Git에 의해 감지되지 않은 상태
  • Modified : 파일의 수정이 Git에 의해 감지된 상태
  • Staged : 파일이 Staging area에 존재하는 상태
    • 기본적으로, Commit을 해야 Tracked 상태로 변경될 수 있지만, Commit을 하지 않은 파일도 예외적으로 Staged 상태를 가질 수 있다.

Staging area


위의 출력 결과 '커밋할 사항에', 'what will be commited' 가 Staging area를 가르킨다.

Local repository에 저장할 파일들이 임시적으로 대기하는 영역을 의미

Local repository에 파일을 저장하는 것은 단순히 파일을 저장하는 것 이외의 특별한 의미를 가진다.

git add를 사용해서 이 영역으로 이동시킨다.

이것을 '파일을 스테이징한다.'라고 표현한다.

git add . 를 하면 현재 디렉토리의 모든 파일이 스테이징된다.

git rm --cached를 사용하면 스테이지를 해제하고 다시 Work space로 되돌린다.

주의할 점은, 아직 Untracked 상태라는 점이다.
Tracked 상태가 되려면 Commit 과정을 거쳐야 한다.

Commit이란

Local repository에 파일을 저장하는 행위를 가리키며, 파일을 Local repository에 저장함과 동시에 파일의 버전을 기록한다.

Commit을 할 때에는 각 버전을 쉽게 구분하기 위해 커밋 메세지를 입력한다.
커밋 메세지는 여러 줄로 입력 가능하지만 -m을 사용하여 짧게 한 줄만 작성한다.

Github


Git Repository를 관리할 수 있는 클라우드 기반 서비스

즉, Git으로 버전을 관리하는 폴더에 대해서 Github을 통해 여러 사람들이 공유하고 접근할 수 있다.

Git 자체는 로컬에서 버전을 관리해주는 프로그램을 의미하고, 위에서 이야기한 백업, 협업 기능을 활용하려면 온라인 원격 저장소가 필요하다. 이러한 원격 저장소 기능을 제공해주는 서비스 중 하나가 Github이다.

Git은 로컬에서 버전을 관리해주는 프로그램이며, Github은 Git을 클라우드 방식으로 구현한 서비스이다.

Git Repository


Git으로 관리되는 폴더

Remote Repository와 Local Repository 두 종류의 저장소를 제공한다.

작업할 때는 Local Repository에서 작업을 하고 공유를 할땐 Remote Repository에 업로드 한다. 또한 다른 사람이 Remote Repository에 올려놓은 코드를 내 Local Repository로 가지고 올 수 있다.

기능


Fork

다른 프로젝트에 Contribute를 하기 위해선

해당 프로젝트 원격 저장소를 내 원격 저장소로 가지고 오는 작업.

Clone

Fork를 하면 나의 Remote Repository에 해당 프로젝트 코드가 옮겨진 상태다. 그리고

이 코드를 수정하기 위해 내 컴퓨터(Local Repository)로 가져오는 작업.

Push

내 컴퓨터에서 소스코드 변경 작업을 완료했다.

이 변경된 내용을 commit을 통해 저장해 준 뒤, Remote Repository에 반대로 올려주는 작업.

즉, Local Repository에 기록해 놓은 commit을 Remote Repository에 업로드 할 수 있다.

이렇게 Push를 완료하면 Github에는 Pull request라는 기능이 있어, 내가 제안한 코드 변경사항에 대해 반영 여부를 요청할 수 있다.

Pull

Remote Repository에서 변경 사항이 있을 때 Local Repository로 가져오는 작업.

profile
ㅎㅎ

0개의 댓글