본문 바로가기
빌드노트 검색

빌드노트

Git·개발 도구

Git·개발 도구 카테고리의 글입니다.

글 검색

글 목록

총 48개의 글

  1. 같은 커밋을 가리키는 태그인데 rev-parse 해시가 다르다

    같은 커밋에 붙인 lightweight·annotated 태그의 기본 해시가 다른 이유를 객체 종류로 확인한다. rev-parse, cat-file -t, show-ref --dereference의 실제 출력을 읽고, 양쪽을 ^{commit}으로 조회해 커밋 ID를 비교한다.

  2. 버그와 무관한 빌드 실패는 git bisect skip으로 남긴다

    기능 버그를 찾는 bisect에서 무관한 빌드 실패를 bad로 표시하면 엉뚱한 커밋으로 범위가 줄어든다. 합성 이력에서 종료 코드 1과 125의 결과를 비교하고, skip 뒤에도 후보가 C2·C3·C4로 남은 경우와 판단 기준을 설명한다.

  3. rebase 충돌에서 ours를 골랐는데 내 수정이 없어졌다

    rebase 충돌의 ours는 upstream부터 재적용한 쪽이다. 같은 파일의 merge·rebase stage 1·2·3을 비교하고, 현재 커밋과 두 버전을 읽어 충돌 밖의 수정까지 보존하는 해결 순서를 확인한다.

  4. git diff main..feature와 GitHub PR의 파일 목록이 다른 이유

    main에만 추가한 파일이 두 점 diff에서는 삭제로 보이고 GitHub PR에서는 빠질 수 있다. 같은 분기에서 두 끝점 비교와 공통 조상 기준 비교의 patch·파일 목록·방향성을 확인하고, 리뷰 목적에 맞는 명령을 고른다.

  5. git worktree add가 이미 사용 중인 브랜치를 거절할 때

    같은 브랜치로 worktree를 만들다 거절되면 오류의 기존 경로와 worktree 목록을 맞춰 본다. 실제 실험으로 기존 폴더·새 브랜치·detached HEAD의 차이와 미커밋 수정이 새 폴더에 따라가지 않는 조건을 확인한다.

  6. PowerShell 배열에 0이 있는데 -eq 조건문은 거짓이다

    PowerShell 배열의 -eq는 Boolean 대신 일치한 원소를 반환한다. 0이나 빈 문자열 하나가 남으면 if는 거짓이고, 같은 값이 두 개 남으면 참이 된다. 실제 타입과 개수를 비교하고 존재 여부를 -contains 또는 결과 개수로 판별하는 방법을 설명한다.

  7. ConvertFrom-Json이 name과 Name을 함께 읽지 못할 때

    대소문자만 다른 name과 Name은 유효한 JSON에서도 PowerShell의 기본 객체 변환을 실패시킬 수 있다. PowerShell 7.6.6에서 -AsHashtable의 키·값·왕복 결과를 확인하고, 철자까지 같은 중복 키와 구분한다.

  8. git switch 뒤에도 수정 중인 파일이 남는 이유

    git switch 뒤에도 수정이 남는 이유를 작업 파일과 커밋 내용으로 구별한다. 독립 저장소에서 전환 성공·거부와 HEAD 보존을 확인하고, 이동 전에 commit 또는 stash로 변경을 보존할 기준을 설명한다.

  9. PowerShell에서 JSON 배열의 원소가 하나면 대괄호가 사라지는 이유

    PowerShell 7에서 JSON 배열을 파이프로 왕복 변환하면 빈 배열은 출력이 없어지고 한 원소 배열은 객체가 될 수 있다. NoEnumerate와 직접 InputObject 전달을 비교하고, 변수를 다시 파이프로 보낼 때 생기는 열거와 버전 차이를 확인한다.

  10. squash merge 뒤 git branch --merged에 브랜치가 안 나오는 이유

    squash로 변경을 반영해도 작업 커밋은 main의 조상이 되지 않는다. 같은 트리를 만든 일반 merge와 부모·공통 조상·--merged를 비교하고, 변경 없는 재병합과 같은 줄을 다시 수정한 후속 병합의 차이를 확인했다.

  11. Windows에서 파일명 대소문자를 바꿨는데 Git에는 변경이 없다

    Windows에서 파일명 대소문자만 바꾼 뒤 폴더와 Git 인덱스의 철자가 달라지는 상태를 실제로 확인했다. 두 경로와 core.ignorecase를 조회하고, 충돌 없는 임시 이름을 거친 git mv로 새 철자를 스테이징하는 방법을 설명한다.

  12. 원격에서 지운 브랜치가 fetch --prune 뒤에도 남을 때

    fetch --prune 뒤 남은 topic이 로컬 브랜치인지 원격 추적 참조인지 확인한다. 표준 refspec에서의 정리 범위와 로컬 커밋·HEAD 보존을 비교하고, 로컬 삭제 전 남은 작업을 확인하는 명령을 설명한다.