레이블이 tig인 게시물을 표시합니다. 모든 게시물 표시
레이블이 tig인 게시물을 표시합니다. 모든 게시물 표시

commit does not belong to any branch

# 잘못된 email 주소가 있어 수정하기 위해 아래 포스팅한 rebase 스크립트를 실행했다.
# rebase 후 tag 를 푸시하지 않았고 no branch(브랜치가 없는) 커밋으로 남게 됐다.
# git log 에는 보이지 않지만 tig cli 툴로 보면 최초 커밋 이전에 수정전 커밋이 no-branch 상태로 추가되어 보인다.

# tig 에서 봤을때 tag 커밋은 no branch 상태로 email 도 수정되지 않은 상태였다.
# 깃헙에서 no-branch 커밋을 보면 다음과 같은 메시지가 나온다.
https://github.com/xxxx/commit/{커밋해시} 
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

# 또 다음 명령으로 커밋이 포함된 브랜치를 찾아도 결과가 없다.
git branch --contain {커밋해시}

# 문제는 tig 로 보면 no-branch 커밋들이 최초 커밋 이전에 중복되어 보인다는 것이다.

# [해결방법]
# 다시 위 포스팅의 rebase 스크립트(이름,email 값 변경해서)를 실행했다.
# mater, develop 강제 푸시해도 변경사항이 없다고 나왔지만, tag 는 강제 푸시가 됐다.
git push --tags -f

# tig 에서 다시 확인해보니 email 수정된 tag 커밋이 제대로 반영됐다.(해결!)

# [로컬 refs 제거방법]
# 추가로 no branch (tag) 커밋들은 다음과 refs/.. 로만 표시된다.
refs/original/refs/tags/1.0.0
refs/original/refs/tags/1.0.1

# refs 는 로컬에 남아 있는 참조 정보라 지워도 된다.
# refs 지우기
# 방법1
# 다음과 같이 일일히 삭제하면 된다.
git update-ref -d refs/original/refs/tags/1.0.0
git update-ref -d refs/original/refs/tags/1.0.1

# 방법2
# 아래 경로의 파일들을 삭제해도 된다. 하지만 .git 내용을 직접 수정하는거 권장되지 않는다.
rm -rf .git/refs/original

# 방법3
# 삭제해야할 refs 가 많다면 이미 remote(origin) 에는 푸시됐으니 로컬에서 새로 클론 받자.
git clone http://{저장소}

# 참고로 이제 tig 에선 no branch 상태의 커밋들이 보이진 않지만
# https://github.com/xxxx/commit/{커밋해시} 에는 여전히 no branch 커밋들을 확인할 수 있다.
# rebase 가 수정된 새로운 커밋을 생성하는거고 이전의 no branch 커밋들은 유효하지 않은 상태로 github 저장소에 계속 남아 있는 것으로 보인다.
# 이 부분은 제거가 안돼서 저장소를 새로 만들어야 하는것 같다.

git tig 사용하기

tig 은 터미널에서 사용하는 git 클라이언트 프로그램이다.
https://github.com/jonas/tig
http://jonas.nitro.dk/tig/manual.html

보통 gui 환경의 sourcetree 를 많이 사용하는데, 터미널에서 vi 로 작업하는 경우 tig 사용이 더 편할때가 있다.(마우스에 손이 안가도 되니까^^)

# 맥에서 brew 로 설치(리눅스는  apt-get , yum 을 사용)
brew install tig

tig 을 실행하면 현재 저장소의 소스 히스토리가 나타나며 항목에서 엔터하면 상세 정보창이 표시된다.

# tig 명령(vi 와 비슷하다.)
h (도움말 보기)
q  또는 :q (종료)
m (메인 보기)
d (diff  보기)
l (로그 보기)
t (디렉토리 보기)
s (상태 보기)
c (스테이지 보기)
y (스태시 보기)
/ (찾기)
n (다음 찾기)
N (이전 찾기)
F (파일명 토글)
X (id토글)
G (커밋 그래프 토글)
R (reload)
C (cherry-pick)

# .tigrc 에 tig 관련 설정을 할 수 있다.
# https://github.com/jonas/tig/blob/master/tigrc 를 기본으로 가져와 복붙하고 필요한 부분은 수정.
vi ~/.tigrc

# tig 기본 커서 컬러는 다음과 같다.
color cursor  white  green  bold

# iterm one-dark 컬러를 사용중인데 white green 대비가 적어 글자가 잘 보이지 않아 .tigrc 에 다음과 같이 설정했다.
# 컬러명 대신 256 컬러 숫자를 사용할 수 있다.
# 테마에 따라 다르겠지만 대략적인 256 컬러 참고 https://jonasjacek.github.io/colors/
color cursor white 88 bold
color title-blur white 130
color title-focus white 130 bold