Ruby Coin

Rails 와 프론트 엔드 기술을 이용해 흥미 위주의 빠른 웹 개발 방법론

git add의 원리

토픽 Ruby Coin > Deploy & Maintenace > 지옥에서 온 Git

수업소개

여기서는 git add를 했을 때 내부적으로 어떤 일이 일어나는지를 알아봅니다. 

수업

 

댓글

댓글 본문
  1. 20210613
  2. zzarbttoo
    저는 파일에서 바로 실행되는게 아니라 .git으로 이동을 해야 진행이 가능한데 저만 그런건가요ㅠㅠ
  3. SSung-JIN
    아래에 싸우전님 말하신 같은 현상 겪은 사람인데요 (윈10)
    이상하게 Bash는 gistory가 안먹힙니다.(멈춥니다 그냥..)

    그래서 폴더에서 cmd켜고 gistory 친 다음에 웹브라우저에 localhost:8805 들어가닌깐 연결되더라구요

    요약하면

    bash에서는 안먹힌다.
    1. 파일탐색기에서 해당폴더경로(.git에서 해야됨)에 cmd. 입력한다
    (모르겠으면 구글에 "폴더에서 cmd열기" 검색)
    2. 거기에서 gistory쳐줌
    3. 웹브라우저에서 localhost:8805(8805가 아닌 경우도 있으니 cmd명령에서 확인) 로 들어가면 됨 (cmd랑 gistory가 연결되어 있음)
  4. supernet
    완료!!!
  5. Edgekim
    감사합니다! 힌트를 찾았네요
    대화보기
    • _Thousand_
      git bash 에서 gistory 가 실행이 안되는데 어떻게 하죠?? 같은 현상을 해결한 분 없으신가요.??

      그냥 cmd 에서 하면
      Bottle v0.13-dev server starting up (using WSGIRefServer())...
      Listening on http://0.0.0.0:8805/
      Hit Ctrl-C to quit.
      뜨긴뜨는데 연결이 안되네요 ㅠㅠ
    • guest
      이건 좀 신기하네 ^^
    • 1231
      gistory의 오류로 문제해결시 다시 공부하겟움.
      7:46 ~
    • PassionOfStudy
      git은 어떤 파일을 저장할 때 파일의 이름이 달라도 내용이 같으면 같은 오브젝트를 가리킨다.
      (이는 중복을 제거해준다.)
    • devE
      git bash에서 bistory만 입력하면 bash가 멈추네요;; 재부팅을 했는데도 문제가 해결되지 않아 방법을 찾고 있습니다.
    • Seock-In Kim
      어째서 파일명이 같은가에 대해서는 다음 동영상에 알아보자라니..
      꼭 드라마 끝에 궁금증 유발해놓구 다음 회차를 꼭 보게만드는 그런 느낌이 드네요 ㅋㅋㅋ
    • software.lee
      감사합니다
    • toids
      gistory 너무 유용한 도구 인거 같아요~!!
      강의 잘보고 있습니다. 감사합니다.
    • 제로스
      C언어의 포인터 개념 느낌이...
      잘봤습니다!
    • 고스트프리
      감사합니다.
    • BANIP
      .git의 폴더 안에는 여러가지 파일들이 있다
      이러한 파일들의 역할들을 보다 편하게 알기 위해 이 강의에서는 gitstory를 사용한다.
      작업 디렉토리상의 변경이 이루어진 상태에서 add 명령어가 아직 수행되지 않았을 경우에는 .git폴더상에서는 아무런 변화가 없다.
      add명령어가 실행되면 index파일이 변경되며 Objects폴더에 새로운 파일이 추가된다.
      파일이 SHA-1을 통해 만들어진 체크섬이며 이 경로는 40자 길이의 16진수로 만들어진다. 앞의 두자리는 Object 디렉토리의 새로운 폴더명이 되며, 마지막 38자리는 파일명이 된다.해쉬값의 이름을 가진 파일의 내용은 add시킨 파일의 내용이 담기게된다. index 파일은 변경된 파일명과 함께 해쉬파일을 참조한다.
      새로운 파일을 추가하면 마찬가지로 index파일에 새로운 버전을 가진 해쉬태그를 참조하는 파일명이 새롭게 갱신이 되며, 오브젝트폴더에 add한 파일이 해쉬값의 파일명으로 저장된다.
      그런데 똑같은 파일을 만들고 add하면 object폴더에 새로운 파일이 추가되지 않는다. 해쉬변환기로 돌린 파일이 object폴더에 이미 존재하면 똑같은 파일을 새로 만들지 않고 해당 파일을 참조하게 된다. 이로써 git은 기존의 버전관리 시스템과는 다르게 아주 효율적인 구조를 가지고 있다고 볼 수 있다. 깃은 데이터를 스냅샷으로 취급되기때문에 중복될 일이 없어 대형프로젝트에 도입하면 크기가 매우 줄어든다.
    • groundntree
      * 프로젝트 폴더 gitfth2 생성하기
      mkdir gitfth2
      cd gitfth2

      * 초기화
      git init
      cd .git
      ls -al
      cd ..
      ls -al
      gistory

      * f1.txt 추가 후 add
      vim f1.txt
      git add f1.txt

      * f2.txt 추가 후 add
      vim f2.txt
      git add f2.txt

      * f1.txt 복사해서 f3.txt
      cp f1.txt f3.txt
      git add f3.txt