220803.til

Universe·2022년 8월 3일
0

study

목록 보기
20/49

Git & Github

Git 에 대해서 정확하게 알아보자

과거에 깃을 아주 잠깐 다뤄봤고 공부도 해봤지만 크게 쓸일이 없어서 까먹고 있었는데
다시 제대로 공부할 기회가 생겨서 다행이다 😇
더더욱 CLI 로는 안해봤어서 조금 더 어려웠다

Git ?

Version Control System

코드 버전관리가 왜 필요한데 ?

첫번째, 수정할 때 마다 파일을 새로 만들면 관리가 되지않고 알아보기도 힘들다

두번째, 언제든 이전버전의 코드로 돌아갈 수 있다
굳이 계속 실행취소를 하지 않아도 특정 기점의 세이브포인트로 돌아갈 수 있다는건 아주 큰 장점이다

세번째, 수정이력을 남기기 위해서
수정 날짜 및 시간, 수정한 사람, 코멘트 등을 남겨 협업 뿐 아니라 개인작업시에도 착오를 줄일 수 있다

네번째, 하나의 프로젝트를 여러명의 개발자들이 협업하기에 좋음
깃으로 branch 단위로 갈래를 나누어 작업한 후 merge 하여 하나의 프로젝트를 완성할 수 있다




Github 는 그럼 뭔데 ?

  • git 을 사용한 프로젝트들의 저장소
  • git 을 이용해 버전관리를 한 프로젝트들을 관리하게 해주는 호스팅 서비스
  • 개발자들의 SNS




Git 에서 가장 중요하고 기본적인 명령어들을 알아보자

Git init

해당 프로젝트를 Git 프로젝트로 주시시킨다
Git log 로 Git Repository 인지 확인 할 수 있다

ls -al 로 파일 내부를 확인해보면 .git 이라는 숨김파일이 하나 생성된 것을 볼 수 있는데
.git 에는 버전관리를 위한 메타정보가 담겨있다
지우면 git 저장소의 변경이력을 잃게되니 주의



git status

상태 창
자신이 지금 Add 명령을 통해 Staging 했는지
commit 명령으로 Repository 에 저장했는지
push 명령으로 원격저장소에 저장했는지
알 수 있다



git add / commit / push & pull / reset

Local 원격 저장소가 아닌 로컬 영역에서는 3가지 단계로 구성되어있다
내가 지금 코딩하는 곳, 스테이징 에어리어, 레포지토리 이렇게 세 단계
그런데 왜 굳이 이렇게 구분해놓았을까 ? add, commit 같이 해버리면 되지
실제로 그런 명령어도 있다
터미널에

git config --global alias.명령어 '!f() { git add -A && git commit -m "$@" && git push; }; f'

로 config 를 설정하고
다음부터 git 명령어 를 입력하면 이제 add commit push 가 한번에 된다

그럼에도 막아놓은 이유는 모든 파일을 다 저장할 필요가 없기 때문이다
저장할 때 마다 매번 이미지파일 같은 용량이 큰 파일을 푸시하게 되면 리소스가 크다


git checkout (-b) branchname

branchname 브렌치로 전환
-b를 붙히면 브렌치 작성과 체크아웃을 한번에 할 수 있다



git clone [REPO_URL][DIR]

해당 레포지토리의 URL 로 저장소에 저장된 요소를 복사해온다
클론을 하는 여러가지 방법들이 있다
해당 브렌치만 클론을 한다던가
얕은 클론으로 큰 프로젝트의 최근 부분만 클론을 한다던가 할 수 있다
방법







총평

내일은 Git으로 Peer Review 를 한다고 하는데 솔직히 제일 기대되는 부분이다
항상 궁금하다
난 이게 최선의 방법일 것 같은데 이것보다 더 간결하고 멋있게 코드를 짤 수 있을까 ?
다른사람들은 이 기능을 어떤 알고리즘으로 구현했을까 ?
내가 이렇게 사용하던 명령어를 다른사람들은 저렇게 사용했다면 그 이유가 뭘까 ?
진지하게 물어보고 배우고 토론해보고 싶다
하다못해 게임조차도 같은 레벨의 사람들이 같은 목표를 가지고 서로 이야기를 나눌 때
미처 알지 못했던 부분을 알게되는 경우가 많았다

profile
Always, we are friend 🧡

0개의 댓글