TortoiseGit:파일을 새 폴더로 이동하는 것이 이동으로 인식되지 않습니다.

TortoiseGit:파일을 새 폴더로 이동하는 것이 이동으로 인식되지 않습니다.

내 저장소의 일부 파일을 새 폴더로 이동하려고 합니다. 나는 git/TortoiseGit이 이것이 삭제 및 다중 추가 대신 이동임을 인식하기를 원합니다.
이 작업을 어떻게 수행할 수 있나요? TortoiseGit의 문서를 확인하고 Google을 검색했지만 그다지 유용하지는 않은 것 같습니다.

그래서 제가 가지고 있는 구조는 다음과 같습니다.

repo_root/somefile.txt

내가 원하는 것:

repo_root/new_folder/somefile.txt

물론 "somefile.txt"는 이동되는 모든 파일과 폴더를 나타냅니다.

답변1

한 가지를 기억하세요:Git은 파일 내용만 추적합니다.

에서파일 이동Pro Git 책 v2 섹션:

다른 많은 VCS 시스템과 달리 Git은 파일 이동을 명시적으로 추적하지 않습니다. Git에서 파일 이름을 바꾸면 파일 이름이 바뀌었음을 알려주는 메타데이터가 Git에 저장되지 않습니다. 그러나 Git은 그 사실을 알아내는 데 꽤 영리합니다.

그리고 Git에서는 이동과 이름 바꾸기가 동일합니다.

그래서,Git은 해당 파일이 수정되지 않는다는 전제 하에서만 자동으로 이동/이름 바꾸기를 감지합니다..

Git은 파일을 이동하거나 이름을 바꿀 때만 다음 작업을 수행합니다.

  1. 추적된 파일이 삭제되면 git은 해당 파일 콘텐츠의 SHA-1을 가져오고 값은 abc.
  2. 추적 해제 파일이 추가되고 git은 해당 파일 내용의 SHA-1을 계산하며 값 abc도 이라고 가정합니다.
  3. 지금 커밋하면 git은 동일한 SHA-1 값을 가지고 있다는 것을 알아낸 다음 이름 바꾸기로 처리합니다.

추적된 파일 중 일부를 수정하고 다른 폴더로 이동했다고 가정해 보겠습니다. 그러면 불행하게도 git은 커밋할 때 자동으로 이름 바꾸기/이동을 감지할 수 없습니다.

git이 자동으로 이름 바꾸기/이동을 추적하도록 하려면,당신은 할 필요가:

파일을 수정하지 말고 한 번의 커밋으로 파일 이름 바꾸기/이동만 하십시오.


파일을 수정하고 동시에 파일을 이동하고 git이 TortoiseGit을 사용하여 파일 이름 바꾸기/이동을 감지하도록 하려면 다음을 수행하세요.

  1. 해당 파일을 마우스 오른쪽 버튼으로 클릭하고 TortoiseGit -> Rename...상황에 맞는 메뉴 항목을 클릭하십시오.
  2. new_folder\파일 이름의 접두어는 다음을 참조하세요.여기에 이미지 설명을 입력하세요
  3. 저지르다

참고: 파일 이름을 하나씩 바꿔야 합니다. 할 일이 많다고 가정해 보세요. 따라서 파일 이름만 바꾸는 것이 좋습니다.

참고 2: 수정하는 경우많이파일에서 git은 그것이 이름 바꾸기/이동인지 알 수 없습니다.

답변2

로부터TortoiseGit 문서:

작업 트리 내에서 파일을 다른 하위 폴더로 이동하려면 마우스 오른쪽 버튼 드래그 앤 드롭 핸들러를 사용할 수 있습니다.

A. 이동하려는 파일이나 디렉터리를 선택합니다.

비.오른쪽 드래그작업 트리 내부의 새 위치로 이동합니다.

C. 마우스 오른쪽 버튼을 놓습니다.

D. 팝업 메뉴에서 선택상황에 맞는 메뉴 → Git 버전이 지정된 파일을 여기로 이동하세요.

답변3

Git은 커밋한 후 백엔드에서 이를 처리합니다. 커밋되지 않은 파일을 처리하는 동안 처음에는 생성 및 삭제를 별도의 작업으로 처리하지만 커밋한 후에는 실제로 파일 이동인지 확인하기 위해 생성으로 삭제를 해결하려고 시도합니다. git이 파일 이동을 발견하면 "old file ==> new file" 메시지가 포함된 커밋 로그에서 이를 직접 확인할 수 있습니다.

또는 더 안전하다고 느끼면 git mv를 사용할 수 있습니다. https://git-scm.com/docs/git-mv

관련 정보