git

shin·2022년 7월 22일
0

Git

목록 보기
1/1

git은 버전을 관리하는 프로그램이다. 여기서 버전관리란? 파일의 버전을 시간에 따라 기록하다가 나중에 특정 시점에서 버전을 꺼내올 수 있는 시스템을 말한다.
버전관리의 장점으로는 지난 과정을 확인할 수 있다는 점과 이전 버전으로 돌아갈 수 있다는 점이다

repository & commit

repository (저장소)

  • 어떤 프로그램은 만드는 프로젝트가 있다. 그럼 그 프로젝트를 담기 위한 최초의 디텍도리를 만들어야 하는데 그 이름을 프로젝트 디렉토리라고 하자. 이 디렉토리에는 프로젝트에 관련된 디렉토리나 파일들이 안에 담겨있다.
    이때 git으로 프로젝트 디렉토리의 버전을 관리하기 시작하면 원하는 시점마다 그 디렉토리에 어떤 것들이 있는지, 이것들이 어떻게 변해가는지를 기록할 수 있다. git이 이런 정보를 기록하는 곳을 repository (저장소)라고 한다.
  • repository (저장소) 안에는 디렉토리의 초창기 모습부터 최근 모습까지 버전별로 담겨있다.
  • git을 사용하면 프로젝트 디렉토리 안에 .git 이라고 하는 디렉토리가 만들어지는데 .git 디렉토리가 repository를 의미한다.

commit

  • 프로젝트 디렉토리의 모습을 하나의 버전으로 남기는 동작을 commit 한다 라고 표현한다. commit을 하면 그 당시의 프로젝트 디렉토리의 모습이 마치 사진처럼 repository에 저장된다. 이 때 고정된 결과물 자체도 commit이라고 한다.
  • repository에 저장된 commit을 나중에 참조하면 과거의 프로젝트 디렉토리의 모습을 볼 수 있다.

커밋(commit) : 프로젝트 디렉토리의 특정 모습을 하나의 버전으로 남기는 행위
레포지토리 (repository) : 커밋이 저장되는 곳

repository 만들기

  • 수학 계산기 프로그램을 만드는 프로젝트를 진행해보자.
  • Git Bash를 사용해서 MathTool이라는 디렉토리를 만들었다.
  • MathTool은 이 프로젝트에서 프로젝트 디렉토리 역할을 한다.
  • MathTool로 이동하고, git으로 MathTool 디렉토리의 버전관리를 시작하기 위해 설정이 필요하다.
  • git init을 작성한다. init은 비어있는 레포지토리를 생성했다는 의미이다.
  • MathTool 디렉토리를 살펴보면 .git 이라는 디렉토리가 생성됐다. .git 디렉토리가 레포지토리를 의미한다.
  • .git 디렉토리 안에 들어가서 불러오면 여러 자식 디렉토리와 파일들이 있다.
  • 여기있는 디렉토리와 파일들로 git은 여러 복잡한 작업을 함으로써 버전관리를 한다.

commit 하기

  • MathTool 디렉토리에 더하기, 빼기 함수가 적혀있는 파이썬파일과 무료를 의미하는 텍스트 파일을 저장한다.

  • 리스트를 불러오면 포함된 것을 확일할 수 있다.
  • git은 커밋하기 전에 어떤 사용자가 커밋을 했는지에 대한 정보가 담겨있어야 한다. 혼자 작업시에는 필요 없겠지만 다른 사용자들이 함께 사용할 경우 구별하기 위해 사용자 정보가 담겨야한다.
  • 사용자 이름과 이메일을 작성했다.
  • 커밋하기 전에 이름, 이메일을 설정해야하고 마지막으로 커밋에 대한 정보를 추가해 줘야한다. 여기서 정보란 어떤 변동사항이 생겼는지를 의미한다.
  • 이러한 정보를 커밋메세지라 한다. 메세지를 남기기 위해 옵션이 필요한데, -m을 사용하면 된다.
  • -m 뒤에 "" 사용해서 내용을 작성하면 된다.
  • 메세지를 작성하고 커밋하게되면 Untracked files: 이라는 문구가 나오게 된다.
    이 문구는 git에 의해서 아직 추적되지 않고 있다라는 의미이다.
    아직 git으로 무언가 해준것이 없어서 파일 버전관리 대상이 아닐때 이러한 문구가 나온다.
  • Untracked files: 문구를 없애기 위해 add라는 작업이 필요하다.
  • add는 원래 있던 파일의 내용들을 수정하고나면 이 파일이 새로운 모습으로 커밋에 포함될 거라고 지정하는 것을 의미한다.

  • add 작업 후에 git commit -m "Creat calculator.py and License" 을 해보면 커밋이 되었다는 출력결과가 나오게 된다.
  • root-commit은 이 프로젝트의 첫번째 커밋이라는 뜻이다
  • 6 insertions(+)는 6줄이 추가 되었다는 의미인데 calculator.py의 5줄과 License.txt의 한 줄을 합쳐서 총 6줄이 되었다는 뜻이다.

Git의 3가지 작업 영역

  • Git은 내부적으로 3가지 종류의 작업 영역을 두고 동작한다.
    • working directory
    • staging area
    • repository
  • working directory
    • 작업을 하는 프로젝트 디렉토리를 말한다. 위 예제에서는 MathTool이 이에 해당한다.
  • staging area
    • git add를 한 파일들이 존재하는 영역이다. git commit을 하게되면 이 영역에 있는 파일들만 commit 된다.
  • repository
    • working directory의 변경 이력들이 저장되어 있는 영역이다. commit들이 저장되는 영역이다.

Git 상태

  • Git은 크게 2가지 상태를 갖는다.
  • Untracted 상태
    • Untracted는 추적되지 않고 있다라는 뜻이다. 즉 파일이 git에 의해서 변동사항이 전혀 추적되고 있지 않는 상태를 말한다.
    • 예를 들어 파일을 생성하고 그 파일을 한 번도 git add를 해주지 않는 상태를 말한다.
  • Tracted 상태
    • git에 의해서 추적되고 있는 상태를 말한다.
    • Tracted는 다시 3가지 상태로 나뉜다.
      • Staged 상태
        - 파일의 내용을 수정하고 staging area에 올라와있는 상태를 말한다.
        - 예를들어 새로 생성한 파일에 내용을 쓰고 git add를 해주거나, 한 번이라도 커밋에 포함됐었던 파일이라도 내용을 수정하고 git add를 해주면 이 상태가 된다.
      • Unmodified 상태
        - 현재 파일의 내용이 커밋된 파일과 비교했을 때 바뀐게 없는 상태면 그 파일은 Unmodified(수정되지 않은) 상태라고 한다.
        - 커밋을 하고 난 직후에는 working directory 안에 모든 파일이 이 상태가 된다.
      • Modified 상태
        - 최신 커밋과 비교했을 때 수정된 점이 있다면 그 파일은 Modified 상태이다.
  • git 파일은 매순간 4가지 상태 중 하나의 상태를 가지게 된다.
  • Add the file : Untracked 파일을 처음으로 git add 해주면 Staged 상태가 된다.
  • Edit the file : 최신으 커밋과 비교했을 때 변화가 없는 파일을 수정하면 Modified 상태가 된다.
  • Stage the file : 변경된 파일(Modified 상태)을 git add하면 Staged 상태가 된다.
  • Commit : 커밋을 하게되면 Staging area에 있던 파일들이 커밋에 반영되고 최신의 파일들과 차이가 없게 되기 때문에 Unmodified 상태가 된다.
  • Remove the file : 파일을 삭제하게 되면 더이상 git에서 인식을 하지 못하기 때문에 Untracked 상태가 된다.

0개의 댓글