📌 Git 에서 add 명령어는 어떤 원리로 동작할까?
이번에는 add
명령어의 동작 원리에 대해 알아보겠습니다.
cd Documents
로 현재 위치를 옮겨준 뒤 mkdir git_2
이라는 새로운 폴더를 만들어 줍니다.
이후 이 디렉토리를 git 저장소로 쓸것이기 때문에 git init
명령어를 사용해줍니다.
cd .git
을 통해 .git 파일 안으로 들어가보겠습니다.
여기있는 파일들의 역할을 하나하나씩 알아가는 것이 Git
의 내부를 이해하는데 핵심적인 요소입니다. 하지만 직접 알아가는것은 힘들기 때문에 gistory
라는 프로그램을 사용합니다.
gistory
명령을 실행시킨후
웹 브라우저에서 localhost:8805
를 입력해줍니다.
이 파일들의 목록은 아까 살펴보았던 .git
폴더 안에 내용과 동일합니다.
지금 실행중인 git bash
는 더이상 명령어를 사용할 수 없으므로 새로운 git bash
를 하나 더 실행해줍니다.
만약 종료하고싶다면 Ctrl + C
를 눌러주시면 됩니다.
새로 실행시킨 git bash
에서 오늘 새로만든 git 저장소로 이동해준 뒤 f1.txt
파일을 만들어 보겠습니다.
이후 localhost:8805
를 새로고침하면 아무런 변화가 없습니다.
이번에는 add
명령을 써보겠습니다.
index
와 object
라는 2개의 파일이 새로 만들어졌습니다.
object
파일을 클릭해보면 아까 작성했던 a 라는 문자가 담겨있습니다. 하지만 이런 문구가 적혀 있습니다.
- f1.txt (This information was not included the original message)
object
에서는 단지 a라는 문자만 저장할뿐이고 a라는 문자가 담긴 파일의 이름을 저장하진 않습니다.
그것은 바로 index
안에 저장되어있습니다.
- index 에는 파일의 이름이 들어가고 object(객체) 에는 파일의 내용이 들어갑니다.
f2.txt
파일을 새로 만든후 add 해보겠습니다.
object
파일이 하나 더 생성된 후 index
에서 f2.txt
파일을 볼 수 있습니다.
cp
명령어를 통해 f1.txt
를 f3.txt
로 복사한후 add 해보겠습니다.
브라우저를 새로고침 해보면 object
파일은 새로 늘어났지 않았습니다.
하지만 f1.txt
와 f3.txt
는 78981922613b2afb6025042ff6bd878ac1994e85
라는
동일한 object 를 가르킵니다.
💡 즉 git 은 어떠한 파일을 저장할때 파일의 이름이 달라도 내용이 같으면 같은 object 를 가르킵니다.
다음에는 object 파일명의 원리에 대해 알아보겠습니다.