IntroGit submodule은 프로젝트 안에 다른 Git 저장소를 포함할 때 유용하게 쓰인다. 하지만 서브모듈은 특정 커밋에 고정되기 때문에 메인 저장소를 업데이트해도 서브모듈이 자동으로 최신 상태로 업데이트 되지 않는다. 아래의 경우에 속한다면 불편함을 겪고 있었을 거라 생각한다.프로젝트에 외부 라이브러리나 모듈이 포함된 경우서브모듈이 자주 업데이트되는 상황에서 최신 상태를 유지하고 싶을 때여러 서브모듈이 있어 일일이 들어가서 업데이트하기 번거로울 때서브모듈을 최신 커밋으로 업데이트할 때, 하나씩 디렉터리에 들어가서 업데이트하지 않고, 명령어 하나로 깔끔하게 처리하는 방법을 알아보자.서브모듈 업데이트1. 서브모듈 초기화 및 업데이트우선, 서브모듈이 아직 초기화되지 않았다면 초기화부터 해주자.git..
Development/Git 15
IntroGit을 사용하다 보면 의도와 다르게 커밋을 하거나, 잘못된 브랜치에서 커밋을 진행하는 실수를 할 때가 있다. 이렇게 한 번 커밋을 하고 나면 --amend 옵션으로 이미 커밋한 내용을 수정하고, force push로 덮을 수 있지만 때로는 커밋 자체를 완전히 취소해야 할 경우도 있다.이 글에서는 실수로 커밋한 내용을 되돌리기 위한 방법들을 예시와 함께 살펴보고, 각 상황에서 주의할 점에 대해 정리한다.실습커밋을 취소해야 하는 상황커밋 취소가 필요한 상황은 다양하다. 다음과 같은 경우가 대표적이다.커밋을 했으나 수정할 내용이 있다: 커밋 메시지나 커밋된 내용에 빠진 부분이 있다면 --amend 옵션을 사용하여 커밋을 수정할 수 있다.잘못된 브랜치에서 커밋을 한 경우: 작업 브랜치가 아닌 다른 브..
Intro Pebble Template 에는 Macro라는 기능이 있습니다. 특정 콘텐츠 블록을 재 사용 가능한 함수처럼 만들어 주는 건데, 이전에 코드를 수정하다 보니 macro를 통째로 날려버렸는지 사용하는 부분만 남아있고 선언된 부분이 없어서 코드가 깨져 있는 부분을 발견했습니다. facet() 이라는 이름의 매크로인데, 어디에 선언되어 있었는지를 정확히 알지 못해서 커밋 히스토리를 찾아내는데 어려움을 겪고 있었습니다. Git 로그에서 파일 변경 내용 중 특정 키워드를 검색하는 방법에 대해서 알아보겠습니다. Git grep 단순 git grep 을 활용하면 해당 검색 조건이 포함된 파일들을 찾아 줍니다. 예를 들어 아래와 같이 입력 하면 git grep shane shane 이라는 텍스트가 들어간 ..
Intro 진행중인 프로젝트의 본격적인 버전 관리에 앞서 해당 스프링부트 어플리케이션에서 git 정보를 토대로 최근 커밋 해시값, 날짜, 버전(태그명) 등을 불러 올 수 있게끔 기능을 추가 해 두었습니다. 그런데 아무리 새로운 태그를 달아 주어도 이전의 태그명이 나오는 문제가 있었고 약간의 검색을 통해 그 차이가 lightweight 와 annotated 때문이었다는걸 알게 되었습니다. 분명 describe --tags 를 입력 할 때는 4.2 버전이 나오지만 git describe 만 입력 했을때는 가장 가까운 3.2 버전으로부터 128 번째 커밋이라는 정보가 나왔습니다. describe 명령은 커밋에서 도달 할 수 있는 가장 최근의 태그를 찾는데요, 태그가 커밋을 가리키는 경우에는 태그만 표시되지만,..
Intro A 라는 프로젝트 아래에 B 라는 서브 모듈이 필요 하게 되었습니다. 이미 B 프로젝트는 C 프로젝트를 서브 모듈로 가지고 있는 상황이었는데, A 프로젝트에 B 프로젝트를 서브 모듈로 추가하고, 다시 삭제하는 과정을 진행 해 보도록 하겠습니다. 서브모듈 추가 git submodule add 저장소주소 서브모듈경로 로 추가 할 수 있습니다. 아래의 명령어는 메인 git 저장소의 /build 폴더에 url-to-pdf 라는 프로젝트를 url-to-pdf 라는 이름으로 서브모듈로 추가하는 예시 입니다. git submodule add git@github.com:Shane-Park/url-to-pdf.git build/url-to-pdf 이후 확인해보면 .gitmodules에 [submodule "b..