일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- HTML
- tomcat
- 답변형 게시판
- Oracle DB
- ||
- sql developer
- HTTP Status 500
- Oracle SQL
- 제약조건
- HTTP Status 404
- rownum
- JavaScript
- SQL
- github
- 한글 인코딩
- git
- 성적프로그램
- group by
- Java
- distinct
- jQuery
- oracle
- JSP
- Bootstrap
- CRUD
- 과정평가형
- 모조칼럼
- 부트스트랩
- alias
- 이클립스
초급의 끄적거림
[Git/Github] git의 동작 원리 / repository 본문
※ git에 관련된 모든 기록은 유튜브 '동빈나' 님의 영상을 바탕으로 하고 있습니다.
https://www.youtube.com/channel/UChflhu32f5EUHlY7_SetNWw/featured
[git의 동작원리]
⊙ git 프로젝트에 담겨있는 데이터들은 파일 시스템 상에서 일종의 '스냅샷' 이라고 볼 수 있음
⊙ 실제로 프로젝트를 commit 하여 적용할 때의 순간을 중요시한다는 특징이 있음
⊙ 파일 자체를 저장하기 보다는 수정 내역 자체를 저장함
⊙ Working directory : 작업할 파일이 있는 디렉토리
⊙ Staging Area : 커밋을 수행할 파일들이 올라가는 영역
⊙ git directory : 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 라고 하여 커밋을 할 수 있다는 명령어가 생김
⊙ 새로고침을 눌러주면 방금 넣은 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 를 해주면 수정된 내용이 등록 되었음을 볼 수 있다
'기타 > Git, Github' 카테고리의 다른 글
error:src refspec master does not match any (0) | 2019.09.15 |
---|---|
[Git/Github] 깃(git) pull 실패 (0) | 2019.09.09 |
[Git/Github] 이클립스에 연동한 git 아이디 삭제 (0) | 2019.08.29 |
[Git/Github] Github에서 파일 삭제 / 폴더 올리기 (0) | 2019.08.28 |
[Git/Github] git과 github, 환경설정 그 외 (0) | 2019.08.20 |