IT박스

자식이 내가 이름을 변경했다고 생각하는 것을 어떻게 막을 수 있습니까?

itboxs 2020. 11. 12. 08:02
반응형

자식이 내가 이름을 변경했다고 생각하는 것을 어떻게 막을 수 있습니까?


두 개의 파일 index.htmltemplate.html. 나는 대부분을 index.html옮겼고 template.html이제 git은 두 파일을 모두 추가 할 때 이름을 변경했다고 생각합니다. 특정 경우에이를 방지 할 수 있습니까?


"허용 된"답변이 있지만 질문에 답변하는 방법에 대한 힌트는 제공하지 않습니다.

git-log (1) 및 git-diff (1)의 정답은 다음과 같습니다.

   --no-renames
       Turn off rename detection, even when the configuration
       file gives the default to do so.

Git이 파일이 복사본이라고 생각하는 이유

Git은 파일 이름이 아닌 콘텐츠를 추적 합니다 . 결과적으로 두 파일의 내용이 상당히 유사하면 git은 파일을 복사하거나 이름을 바꾼 것으로 간주합니다. git-log (1)을 읽으면 다음을 배울 수 있습니다.

유사성 지수는 변경되지 않은 라인의 비율이고, 비 유사성 지수는 변경된 라인의 비율입니다. 내림 한 정수와 퍼센트 기호가 뒤 따릅니다. 따라서 100 %의 유사성 인덱스 값은 두 개의 동일한 파일에 대해 예약되어있는 반면 100 % 비 유사성은 이전 파일의 행이 새 파일로 만들어지지 않았 음을 의미합니다.

따라서 유사성 지수가 100 %라고 가정하면 git은 이것이 사본이라고 생각할 것입니다. 가장 좋은 방법은 git이 옳은 일을하고 있다고 생각하지 않는다면 무슨 일이 일어나는지 설명하기 위해 합리적인 로그 메시지 나 메모를 추가하는 것입니다 (자세한 내용은 git-notes (1) 참조).

유사성 지수 조정

복사 나 이름 바꾸기를 고려하기 위해 git이 사용하는 값을 조정 해 볼 수도 있습니다. git-log (1) 매뉴얼은 다음과 같이 말합니다.

-M[<n>], --find-renames[=<n>]

If generating diffs, detect and report renames for each commit. For
following files across renames while traversing history, see --follow. If
n is specified, it is a threshold on the similarity index (i.e. amount
of addition/deletions compared to the file’s size). For example, -M90%
means git should consider a delete/add pair to be a rename if more than
90% of the file hasn’t changed.

-C[<n>], --find-copies[=<n>]    

Detect copies as well as renames. See also --find-copies-harder.
If n is specified, it has the same meaning as for -M<n>.

다시 말하지만, 파일이 대부분 유사한 경우에는 도움이되지 않지만 이러한 값을 사용하여 복사본 또는 이름 변경으로 간주되기 위해 얼마나 유사한 지 조정할 수 있습니다. 귀하의 마일리지가 다를 수 있습니다.


만약 당신이 커밋 직전에 있고 "git가 화가났다는 기분이 안 좋다"면, 이름을 바꾼 모호한 파일 git의 추가를 취소하고 커밋을 수행 한 다음 모호한 파일을 다시 추가하고 커밋합니다.

git reset ambiguous_file_git_thought_you_renamed
git commit
git add ambiguous_file_git_thought_you_renamed
git commit

이것은 나를 위해 일했습니다.

이름이 변경되지 않았는지 다시 확인하십시오.

git diff --name-status -C HEAD^^ HEAD
M       ambiguous_file_git_thought_you_renamed
M       original_file

시작 부분의 "M"은 수정됨을 의미하고 "R"은 이름 변경됨을 의미합니다. 여기에는 Renamed가 없습니다.


"하나"커밋에서 이름 바꾸기라고 생각하는 git을 피하려면.

  1. 잘못된 이름 변경을 트리거하지 않는 변경 사항을 준비하고 커밋합니다.
  2. git이 이름을 바꾸고 커밋했다고 생각하게 만든 나머지 파일을 준비합니다. git commit --amend

참고URL : https://stackoverflow.com/questions/15031576/how-can-i-prevent-git-from-thinking-i-did-a-rename

반응형