
내 저장소의 일부 파일을 새 폴더로 이동하려고 합니다. 나는 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은 파일을 이동하거나 이름을 바꿀 때만 다음 작업을 수행합니다.
- 추적된 파일이 삭제되면 git은 해당 파일 콘텐츠의 SHA-1을 가져오고 값은
abc
. - 추적 해제 파일이 추가되고 git은 해당 파일 내용의 SHA-1을 계산하며 값
abc
도 이라고 가정합니다. - 지금 커밋하면 git은 동일한 SHA-1 값을 가지고 있다는 것을 알아낸 다음 이름 바꾸기로 처리합니다.
추적된 파일 중 일부를 수정하고 다른 폴더로 이동했다고 가정해 보겠습니다. 그러면 불행하게도 git은 커밋할 때 자동으로 이름 바꾸기/이동을 감지할 수 없습니다.
git이 자동으로 이름 바꾸기/이동을 추적하도록 하려면,당신은 할 필요가:
파일을 수정하지 말고 한 번의 커밋으로 파일 이름 바꾸기/이동만 하십시오.
파일을 수정하고 동시에 파일을 이동하고 git이 TortoiseGit을 사용하여 파일 이름 바꾸기/이동을 감지하도록 하려면 다음을 수행하세요.
- 해당 파일을 마우스 오른쪽 버튼으로 클릭하고
TortoiseGit -> Rename...
상황에 맞는 메뉴 항목을 클릭하십시오. new_folder\
파일 이름의 접두어는 다음을 참조하세요.- 저지르다
참고: 파일 이름을 하나씩 바꿔야 합니다. 할 일이 많다고 가정해 보세요. 따라서 파일 이름만 바꾸는 것이 좋습니다.
참고 2: 수정하는 경우많이파일에서 git은 그것이 이름 바꾸기/이동인지 알 수 없습니다.
답변2
로부터TortoiseGit 문서:
작업 트리 내에서 파일을 다른 하위 폴더로 이동하려면 마우스 오른쪽 버튼 드래그 앤 드롭 핸들러를 사용할 수 있습니다.
A. 이동하려는 파일이나 디렉터리를 선택합니다.
비.오른쪽 드래그작업 트리 내부의 새 위치로 이동합니다.
C. 마우스 오른쪽 버튼을 놓습니다.
D. 팝업 메뉴에서 선택상황에 맞는 메뉴 → Git 버전이 지정된 파일을 여기로 이동하세요.
답변3
Git은 커밋한 후 백엔드에서 이를 처리합니다. 커밋되지 않은 파일을 처리하는 동안 처음에는 생성 및 삭제를 별도의 작업으로 처리하지만 커밋한 후에는 실제로 파일 이동인지 확인하기 위해 생성으로 삭제를 해결하려고 시도합니다. git이 파일 이동을 발견하면 "old file ==> new file" 메시지가 포함된 커밋 로그에서 이를 직접 확인할 수 있습니다.
또는 더 안전하다고 느끼면 git mv를 사용할 수 있습니다. https://git-scm.com/docs/git-mv