source

git에게 개별 라인을 무시하도록 지시하는 방법, 즉 특정 코드 라인에 대해 gitnore

manycodes 2023. 6. 30. 22:28
반응형

git에게 개별 라인을 무시하도록 지시하는 방법, 즉 특정 코드 라인에 대해 gitnore

.gitignore전체 파일을 무시할 수 있지만, 코딩하는 동안 특정 코드 행을 무시할 수 있는 방법이 있습니까?

프로젝트에 동일한 디버그 행을 자주 반복적으로 추가하지만 커밋하기 전에 제거해야 합니다.나는 단지 코드에 있는 대사들을 유지하고 그것들을 무시하고 싶습니다.

Git 필터를 사용하여 다음과 같은 작업을 수행할 수 있습니다.

  1. Git 특성 파일 만들기/열기:
    • <project root>/.gitattributes(repo에 커밋됨)
      OR
    • <project root>/.git/info/attributes(repo에 커밋되지 않음)
  2. 필터링할 파일을 정의하는 행을 추가합니다.
    • *.rb filter=gitignore즉, 이름이 지정된 필터 실행gitignore대체로*.rb파일
  3. 정의합니다.gitignore필터를 사용합니다.gitconfig:
    • $ git config --global filter.gitignore.clean "sed '/#gitignore$/d'"즉, 이 줄을 삭제합니다.
    • $ git config --global filter.gitignore.smudge cat즉, repo에서 파일을 가져올 때 아무것도 하지 않습니다.

주의:
물론, 이것은 루비 파일을 위한 것이며, 행이 다음으로 끝날 때 적용됩니다.#gitignore에서 전세계적으로 적용되는.~/.gitconfig사용자의 목적에 맞게 필요에 따라 수정합니다.

경고!
이렇게 하면 작업 파일이 레포(물론)와 다릅니다.체크아웃 또는 리베이스는 이러한 라인이 손실됨을 의미합니다!이 트릭은 체크아웃, 리베이스 또는 당김 시 라인이 반복적으로 손실되기 때문에 쓸모 없어 보일 수 있지만, 저는 이를 활용하기 위해 특정 사용 사례를 가지고 있습니다.

그저.git stash save "proj1-debug" 필터가 비활성 상태인 동안(일시적으로 비활성화)gitconfig또는 뭔가).이런 식으로, 나의 디버그 코드는 항상git stash apply이 대사들이 실수로 저지를 염려 없이 언제든지 내 코드를 사용할 수 있습니다.

이러한 문제를 해결할 수 있는 가능한 아이디어가 있지만, 다음에 실행해 보겠습니다.

git 필터와 git 속성을 언급해준 Rudi와 jw013에게 감사드립니다.

자바 코드를 작성하는 데도 비슷한 문제가 있었습니다.제 해결책은 커밋하지 않을 코드를 마크업한 다음 내 마크업을 찾는 사전 커밋 후크를 추가하는 것이었습니다.

#!/bin/bash
#
# This hook will look for code comments marked '//no-commit'
#    - case-insensitive
#    - dash is optional
#    - there may be a space after the //
#
noCommitCount=$(git diff --no-ext-diff --cached | egrep -i --count "(@No|\/\/\s?no[ -]?)commit")
if [ "$noCommitCount" -ne "0" ]; then
   echo "WARNING: You are attempting to commit changes which include a 'no-commit'."
   echo "Please check the following files:"
   git diff --no-ext-diff --cached --name-only -i -G"(@no|\/\/s?no-?)commit" | sed 's/^/   - /'
   echo
   echo "You can ignore this warning by running the commit command with '--no-verify'"
   exit 1
fi

언급URL : https://stackoverflow.com/questions/16244969/how-to-tell-git-to-ignore-individual-lines-i-e-gitignore-for-specific-lines-of

반응형