Code/git

Code/git

[gitlab] Create Merge Request 시 기본 branch명 변경

기본적으로, gitlab의 issue에서 merge request를 생성할 때, 브랜치 명은 다음 규칙을 따른다. {이슈번호}-{이슈명 축약} 이슈명의 경우, 한글로 작성할 경우 {이슈번호}- 로만 표기되는 경우도 잦고, 이슈만을 위한 branch를 찾기도 번거롭다. 따라서, branch명의 템플릿을 변경하는 방법에 대해 작성하고자 한다. Merge Request branch name template 변경 embedded/service/gitlab-rails/app/models/issue.rb 파일의 to_branch_name 함수 변경 변경전 def to_branch_name if self.confidential? "#{iid}-confidential-issue" else self.class.to_br..

Code/git

[Git] Remote에서 삭제된 Branch, Local에서도 제거하기

일반적으로, pull 또는 fetch 명령어를 통해 가져온 Remote branch 정보는 Remote에서 삭제 되더라도 계속해서 리스트에서 제거되지 않는다. 따라서 이를 제거하기 위해 일반적으로는 git fetch --prune 명령어를 통해 삭제된 branch를 리스트에서 제거하는 작업을 수행한다. 하지만 이와 같은 동작은 Remote branch의 정보만 업데이트하며, checkout된 local branch 목록에서는 지워지지 않는다. 이를 해결하기 위해선 아래와 같은 명령어를 실행하면 손쉽게 해결할 수 있다. git branch -r | awk '{print $1}' | egrep -v -f /dev/fd/0

Code/git

[Git] 실수로 날린 Branch의 Commit 복구하기

최근 Remote의 Branch를 제거하던 중 아직 개발중인 Branch를 삭제하는 일이 발생했다. 다행히 해당 Branch에 대해 Merge Request를 생성해서 관리하고 있었고, 이에 대한 Commit hash 기록이 남아있어 일부 복구가 가능했다. 하지만, 미처 기록이 남지 않은 커밋이 있었고, 이를 복구하기위해 여러가지 방안을 찾아보았고, 아래의 방법을 사용하면 쉽게 찾을 수 있었다. git reflog | awk '{ print $1 }' | xargs gitk 위의 명령어는 최근 60일 이내의 log를 다시 볼 수 있었고, 이를 통해 Commit 정보를 받아와 gitk를 이용해 최근 Commit Log를 Graph화 하여 볼 수 있었다. 앞으로는 삭제할 때 조금 더 신중히 해야겠다.

Code/git

[Git] Sub directory를 새 저장소에 옮기고 sub module로 변경하기

코드를 관리하면서, 여러 프로젝트에서 동일한 코드를 사용하게 되는 경우가 종종 발생한다. 이러한 상황이 발생하게 될 경우 보통은 코드의 복사/붙여넣기를 통해 코드를 관리하게 된다. 이러한 복사/붙여넣기 방식은 코드 관리에 어려움을 겪게 될 수 있는데, 어떤 프로젝트에는 반영된 부분이 다른 프로젝트에는 반영이 되거나 누락되는 경우가 흔히 발생하게 된다. 이러한 부분은 git을 사용할 경우 공통된 부분의 코드에 대해 sub module 기능을 이용하여 분리하게 될 경우 편리하게 개선 할 수 있다. sub module이란 파일을 직접 갖는게 아니라 다른 코드 저장소(repository)에 있는 코드를 링크만 하는 방식이다. 이러한 특성을 이용하여 공통된 부분을 폴더로 분리하고 별도의 저장소로 분리한 뒤 해당 ..

후유증
'Code/git' 카테고리의 글 목록