관리 메뉴

surish

[Git]Git 기본개념 이해하기 본문

개발

[Git]Git 기본개념 이해하기

surish 2022. 12. 13. 09:13

계속 미뤄왔던 깃을 4주만에 끝내보려고 마음을 먹었다(!). 해보고 싶은 프로젝트가 있었는데, 생기부 점검 시즌 전에 끝내보고 싶었지만 늘 그렇듯 매일매일 시간에 쫓겨살다보니(?) 손도 못대고 12월 중순이 오고... 그래도 올해가 가기 전에는 꼭 완성해보고싶다. ㅋㅋ

1. Git의 역사

  • 2005년에 Linus Torvalds에 의해 개발되었다.
  • 기하학적 불변 이론을 바탕으로 만들어졌다고 하는데.... 이게 뭐지?
  • Git은 리눅스 커널을 만들 때 (토르발즈가 자신의 편의를 위해 만든) 시스템으로,
  • 토르발즈는 이제껏 모든 프로젝트를 본인의 필요에 의해 진행했다고...(출처: ted)
  • 개발 과정에서 ctrl+z, 즉 undo의 개념과 비슷한데, 파일이 많아지고 저장 횟수가 많아지면서 필요하게 되었다.

리눅스 깃허브

  • 리눅스 개발 깃에 들어가보면 이렇게 아직까지도 커밋이 이뤄지는 것을 볼 수 있었다.....wow
  • 첫번째 버전으로 돌아가야할 때!

2. Git 과 Github

github 소개페이지

  • 원본위치를 지정해서 올려두는 분산버전관리시스템(CVS) : 깃!
  • 깃은 여러 버전의 문서를 만들 때, 기본 버전을 유지하고 복사하여 여러 개의 버전으로 만들 때 복사하지 않고
    깃이 프로그램을 쳐다보면서 어떻게 바뀌는지를 감시하고 있다!
  • 파일을 여러개 만드는 것에 비해 용량이 절약되고, 오타 하나를 여러 번 반복해서 수정하지 않아도 된다.
  • 깃이 저장하는 히스토리(commit)의 개념은 구글 닥스와 아주 비슷하다.
  • '분산' 즉 pull request가 바로 나의 변동분만큼 코드를 가져가는 제안
  • 합치기로 결정(merge)한다.
  • 협업 도구로, 여러 명이 사용하고 여러 버전을 만든다는 전제 하에 작업. (작업 편의성을 위해)
  • 선형적인 작업이 아니라 여러 작업환경을 빠르게 만들어준다.
  • 즉, 멀티버스+타임머신(닥터스트레인지가 될 수 있는 도구다!) : branch

issue, branch, merge과정 실습

탭들...

  • code에는 코드와 readme파일 등 각종 파일이 담겨 있다.

각종 코드

 

파일을 열었을 때 창

코드 파일을 클릭하면 이제 코드가 나오는데, Raw는 코드만 딸 수 있는 것 같고, blame을 클릭하면 각 코드별로 상세한 히스토리가 나온다. 아래 코드는 참고로 3달전에 썼던 코드를 그냥 다 삭제하고 덮어쓴 거라 버전이 사실상 다 뭉개진 상태인데(이렇게 하면 안된다.ㅋ..)

blame

  • issue : 기능 추가 등 게시판 역할, 소통 공간. CS에서 고객상담할 때 메모하는 것 처럼! 사용하는 곳이다.
  • 지금까지 코드를 보면서 보완하거나 수정해야할 것이 있을 때 그냥 일반 메모장에다가 "이거 확장해야함, 여기 이부분 오류 고치기, 출력문구 고치기 " 등등 두서없이 작성했는데, 해결해야할 부분을 하나씩 쓰고, 하나씩 클리어하는 맛이 있을 것 같다.
  • issue에는 open과 closed가 있는데, 한 이슈에 대해 논의를 열거나(open) 종료(close)할 수 있다.

첫번째 이슈 closed (뒤집어 엎은 것)

 

두번째 이슈 open

예를 들어 두번째 이슈는 마지막에 문구를 출력하게 했는데, 브랜치를 새로 만들어보았다. 그러면 create pull request가 뜬다.

추가추가

 

issue closed

  • 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