일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- github
- 업무자동화
- causal inference
- 크롤링
- git
- Counterfactual
- Selenium
- 구글클래스룸
- Causal Discovery
- beautifulsoup
- 자동화
- 구글클래스룸출결
- 온라인수업
- Today
- Total
surish
[Git]Git 기본개념 이해하기 본문
계속 미뤄왔던 깃을 4주만에 끝내보려고 마음을 먹었다(!). 해보고 싶은 프로젝트가 있었는데, 생기부 점검 시즌 전에 끝내보고 싶었지만 늘 그렇듯 매일매일 시간에 쫓겨살다보니(?) 손도 못대고 12월 중순이 오고... 그래도 올해가 가기 전에는 꼭 완성해보고싶다. ㅋㅋ
1. Git의 역사
- 2005년에 Linus Torvalds에 의해 개발되었다.
- 기하학적 불변 이론을 바탕으로 만들어졌다고 하는데.... 이게 뭐지?
- Git은 리눅스 커널을 만들 때 (토르발즈가 자신의 편의를 위해 만든) 시스템으로,
- 토르발즈는 이제껏 모든 프로젝트를 본인의 필요에 의해 진행했다고...(출처: ted)
- 개발 과정에서 ctrl+z, 즉 undo의 개념과 비슷한데, 파일이 많아지고 저장 횟수가 많아지면서 필요하게 되었다.
- 리눅스 개발 깃에 들어가보면 이렇게 아직까지도 커밋이 이뤄지는 것을 볼 수 있었다.....wow
- 첫번째 버전으로 돌아가야할 때!
2. Git 과 Github
- 원본위치를 지정해서 올려두는 분산버전관리시스템(CVS) : 깃!
- 깃은 여러 버전의 문서를 만들 때, 기본 버전을 유지하고 복사하여 여러 개의 버전으로 만들 때 복사하지 않고
깃이 프로그램을 쳐다보면서 어떻게 바뀌는지를 감시하고 있다! - 파일을 여러개 만드는 것에 비해 용량이 절약되고, 오타 하나를 여러 번 반복해서 수정하지 않아도 된다.
- 깃이 저장하는 히스토리(commit)의 개념은 구글 닥스와 아주 비슷하다.
- '분산' 즉 pull request가 바로 나의 변동분만큼 코드를 가져가는 제안
- 합치기로 결정(merge)한다.
- 협업 도구로, 여러 명이 사용하고 여러 버전을 만든다는 전제 하에 작업. (작업 편의성을 위해)
- 선형적인 작업이 아니라 여러 작업환경을 빠르게 만들어준다.
- 즉, 멀티버스+타임머신(닥터스트레인지가 될 수 있는 도구다!) : branch
issue, branch, merge과정 실습
- code에는 코드와 readme파일 등 각종 파일이 담겨 있다.
코드 파일을 클릭하면 이제 코드가 나오는데, Raw는 코드만 딸 수 있는 것 같고, blame을 클릭하면 각 코드별로 상세한 히스토리가 나온다. 아래 코드는 참고로 3달전에 썼던 코드를 그냥 다 삭제하고 덮어쓴 거라 버전이 사실상 다 뭉개진 상태인데(이렇게 하면 안된다.ㅋ..)
- issue : 기능 추가 등 게시판 역할, 소통 공간. CS에서 고객상담할 때 메모하는 것 처럼! 사용하는 곳이다.
- 지금까지 코드를 보면서 보완하거나 수정해야할 것이 있을 때 그냥 일반 메모장에다가 "이거 확장해야함, 여기 이부분 오류 고치기, 출력문구 고치기 " 등등 두서없이 작성했는데, 해결해야할 부분을 하나씩 쓰고, 하나씩 클리어하는 맛이 있을 것 같다.
- issue에는 open과 closed가 있는데, 한 이슈에 대해 논의를 열거나(open) 종료(close)할 수 있다.
예를 들어 두번째 이슈는 마지막에 문구를 출력하게 했는데, 브랜치를 새로 만들어보았다. 그러면 create pull request가 뜬다.
- pull 버튼을 누르면 바뀐부분에 대한 데이터만 받아서 업데이트를 한다. 바뀔때마다 추적하기 이슈를 해결하는 과정!(소통용)
- 깃에서는 save라 하지 않고 commit이라 한다. 즉 상태를 저장한다.
- 추가로 git을 클론(clone)한다는 것은 온라인 소스코드를 모두 내 컴퓨터로 옮긴다. 즉 히스토리 정보까지 모두 포함된 버전을 다운받게 됨.
- 공부하다가 직접 눌러봐야 뭔갈 이해할 것 같아서 샘플로 해봤는데, branch, pull request등의 기능을 직접 써보니 알 것 같다.
깃의 구조는
마치며
- 하지만 아직 잘 모르는 부분은 clone인 것 같은데(아직 뭘 모르는지도 잘 모름)
- 이 바뀐 코드를 컴퓨터에서 직접 실행하면서 바꿀 수 있는 부분이 clone해서 비쥬얼 코드로 가져오는 것 같고,
- 비쥬얼 코드로 가져오면 쥬피터노트북처럼 실행결과가 안나오기 때문에
- 비쥬얼코드에서 쥬피터 노트북 설정을 하면서 하면 될 것 같다.
출처
1. <데이터홀릭 ep.172> : 깃과 깃허브
2. wikipedia
보충 공부
issue, pull request 는 깃허브에 있는 기능이므로 깃과 깃허브 구분하기! 하나의 GUI일 뿐이다.
delta-based는 변경분만, snapshot은 통으로. 하지만 용량은 스냅샷이 더 적다.
궁극적으론(?) 커맨드라인으로만 작성할 수 있으면 좋음.
한 번 이상 add, commit되거나 하면 track 되기 시작함.
add와 commit의 차이는? 바로 커밋만 하는 것도 가능하다. 메시지를 남길 수 없냐 있냐의 차이!
커밋의 중요성은 소통에 있음
clone, pull차이? 다음 포스팅에서! main, master차이도!
'개발' 카테고리의 다른 글
[Git] 복습 & 보완 (0) | 2023.02.05 |
---|---|
[Git] Git 전반적인 프로세스 나노복습 (0) | 2023.01.14 |
[Git]Github (0) | 2023.01.03 |
[Git] 브랜치 실습하기 (0) | 2022.12.28 |
[Git]기본 명령어 실습 (0) | 2022.12.19 |