Programing

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

lottogame 2020. 6. 15. 08:18
반응형

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


이 질문에는 이미 답변이 있습니다.

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

프로젝트에 동일한 디버그 라인을 자주 반복적으로 추가하지만 커밋하기 전에 제거해야합니다. 코드에 줄을 유지하고 자식을 무시하고 싶습니다.


이것은 git 필터를 사용 하여 수행하는 방법입니다 .

  1. gitattributes 파일 생성 / 열기 :
    • <project root>/.gitattributes(레포에 투입 될 것임)
      또는
    • <project root>/.git/info/attributes (리포지토리에 투입되지 않음)
  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 필터와 gitattributes를 언급 한 Rudi와 jw013에게 감사합니다.


Java 코드 작성과 비슷한 문제가 있습니다. 내 솔루션은 커밋하지 않으려는 코드를 마크 업 한 다음 내 마크 업을 찾을 사전 커밋 후크를 추가하는 것입니다.

#!/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

참고 : https://stackoverflow.com/questions/16244969/how-to-tell-git-to-ignore-individual-lines-ie-gitignore-for-specific-lines-of

반응형