초급의 끄적거림

[Git/Github] git의 동작 원리 / repository 본문

기타/Git, Github

[Git/Github] git의 동작 원리 / repository

codingD 2019. 8. 25. 16:34

※ git에 관련된 모든 기록은 유튜브 '동빈나' 님의 영상을 바탕으로 하고 있습니다.

 https://www.youtube.com/channel/UChflhu32f5EUHlY7_SetNWw/featured

 

 

[git의 동작원리]

 ⊙ git 프로젝트에 담겨있는 데이터들은 파일 시스템 상에서 일종의 '스냅샷' 이라고 볼 수 있음

 ⊙ 실제로 프로젝트를 commit 하여 적용할 때의 순간을 중요시한다는 특징이 있음

 ⊙ 파일 자체를 저장하기 보다는 수정 내역 자체를 저장함

 

 ⊙ Working directory : 작업할 파일이 있는 디렉토리

 ⊙ Staging Area : 커밋을 수행할 파일들이 올라가는 영역

 ⊙ git directory : git 프로젝트의 메타 데이터와 데이터 정보가 저장되는 디렉토리 ( .git을 말함 - 이걸 지우면 git이 정상작동 하지 않음)

 

유튜버 '동빈나' 님 영상에서 발췌한 'git 작동원리'

 

 ⊙ git add : 작업한 내용을 Staging Area 아에 올릴 때 - 보완할 필요가 있는 것들은 add 하지 않음

 ⊙ git push : 실제로 git에 반영하기 위함

 ⊙ git fetch, git merge : 타인이 작업한 내용을 내 컴퓨터로 다운 받기 위해서 사용 

  → 둘을 동시에 수행하는 명령어 : git pull

 

[repository 저장소]

 ⊙ repository = repo

 ⊙ 실제로 각종 파일이나 소스코드가 담겨 있으면서 커밋 내역 등의 모든 작업 이력이 담겨 있는 공간

 ⊙ 실제로 프로젝트의 메타 데이터를 포함해 각종 데이터는 .git 폴더에 담김

 ⊙ .git 폴더를 열어보면 각종 데이터와 해시 값등이 담겨 있는데 저장소에 있는 메타 데이터를 열 때는 워드패스로 여는 것이 수월

 ⊙ 어떤 파일을 커밋하게 되면 각 작업들을 분류하기 위해 내부적으로 해당 작업에 대한 해시 값을 이용하는 것으로 일반적으로 해시 값은 충돌이 발생하지 않기 때문에 정확히 커밋 내역들을 관리 할 수 있다

 

 

[소스코드를 수정하여 git 저장소에 반영하기]

 1. 해당 프로젝트에 소속된 사람이 아닌 경우

   - 특정한 커뮤니티의 구성원이 아니라서 스스로 커밋을 하여 저장소에 적용할 권한이 없다면, 소스코드를 수정하여수정하는 것에 제약이 있기 때문에 PR(pull request)를 작성하여 오픈소스에 기여할 수 있다.

- 큰 오픈 소스 프로젝트의 구성원으로 참여하고 싶을 때 사용하는 방법으로 PR에 수정사항을 담아 전송하면 적용 되기도 함

 

 2.  해당 프로젝트에 소속된 사람인 경우
  - 자신이 해당 권한을 가지고 있으므로 그냥 commit하고 push해서 저장소에 수정 내역을 반영하면 됨 

 

 

[실전연습]

 ⊙ 일전에 만들어 놓은 repo에서 clone 을 하기 위해 'Clone or download' 에서 링크 확인, 복습

 

 ⊙ cmd 창에서 'git clone 클론 링크'

 

 ⊙ 'git clone' 을 사용하여 지정한 경로에 clone 된 것을 볼 수 있음

 ⊙ 클론의 경우, 별도의 권한 없이 다운로드 권한만 있다 하더라도 소스코드 다운이 가능하다

 ⊙ 클론을 이용해서 내 컴퓨터에서 사용할 수 있음

 

 

 ⊙ git status : 현재 버전관리의 상태를 보여주는 명령어 

   - 붉은 글씨로 나타날 경우, 추적되지 않는 파일로 아직 git에 올릴 준비가 되지 않은 파일을 의미

 ⊙ include in what will be commited 라고 하여 커밋을 할 수 있다는 명령어가 생김

 

git에 my_module 이라는 파일을 추가
추가가 되어서 녹색으로 새로운 파일을 표시함
굳이 파일명을 적지 않고 add . 이라고 하면 다 들어감
my_module 이라는 파일 하나가 커밋 된 것을 알려줌
push 까지 하게 되면 끝

 

 ⊙ 새로고침을 눌러주면 방금 넣은 my_module이 생긴 것을 볼 수 있음

 

 ⊙ 원래 작성된 'my_module.py'는 return a+b 였는데 a - b도 추가하여 내용을 수정함

 ⊙ 수정된 후 git status 를 하게 되면 수정된 파일이 존재 한다고 붉은 글씨로 표현됨

   1. git add를 이용해서 새롭게 파일을 추가하는 방법

   2. git checkout을 이용해서 수정된 내용을 무시하는 방법

 

  ⊙  git checkout 을 이용했을 경우

    - 수정한 내용을 무시하면서 다시 원래 상태로 돌아와 있음을 알 수 있음, 나중에 수정되어 추가된 a - b 가 사라져 있음을 알 수 있다

 

 

 

    - 다시 a - b 를 추가하여 수정 후, add 와 push 를 해주면 수정된 내용이 등록 되었음을 볼 수 있다

 

Comments