과거에 깃을 아주 잠깐 다뤄봤고 공부도 해봤지만 크게 쓸일이 없어서 까먹고 있었는데
다시 제대로 공부할 기회가 생겨서 다행이다 😇
더더욱 CLI 로는 안해봤어서 조금 더 어려웠다
Version Control System
첫번째, 수정할 때 마다 파일을 새로 만들면 관리가 되지않고 알아보기도 힘들다
두번째, 언제든 이전버전의 코드로 돌아갈 수 있다
굳이 계속 실행취소를 하지 않아도 특정 기점의 세이브포인트로 돌아갈 수 있다는건 아주 큰 장점이다
세번째, 수정이력을 남기기 위해서
수정 날짜 및 시간, 수정한 사람, 코멘트 등을 남겨 협업 뿐 아니라 개인작업시에도 착오를 줄일 수 있다
네번째, 하나의 프로젝트를 여러명의 개발자들이 협업하기에 좋음
깃으로 branch 단위로 갈래를 나누어 작업한 후 merge 하여 하나의 프로젝트를 완성할 수 있다
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 를 한다고 하는데 솔직히 제일 기대되는 부분이다
항상 궁금하다
난 이게 최선의 방법일 것 같은데 이것보다 더 간결하고 멋있게 코드를 짤 수 있을까 ?
다른사람들은 이 기능을 어떤 알고리즘으로 구현했을까 ?
내가 이렇게 사용하던 명령어를 다른사람들은 저렇게 사용했다면 그 이유가 뭘까 ?
진지하게 물어보고 배우고 토론해보고 싶다
하다못해 게임조차도 같은 레벨의 사람들이 같은 목표를 가지고 서로 이야기를 나눌 때
미처 알지 못했던 부분을 알게되는 경우가 많았다