Git이 이전에 이동 한 파일을 확인하도록하기
나는 생각하지 않고 수동으로 많은 파일을 이동했으며 파일이 실제로 다른 파일이 아니라 단지 이동되었음을 인식하도록 git을 얻는 방법을 찾을 수 없습니다. 이전을 제거하고 새 항목을 추가 (따라서 기록을 잃음)하거나 git-mv로 모든 변경 사항을 다시 실행하는 것 외에 다른 방법이 있습니까?
나는 이미 이것을한다고 생각한다. 이제 내가 틀릴 수 있지만 git은 파일 시스템에서의 위치 또는 델타 / 차이를 기반으로하지 않는 내용을 기반으로 파일을 추적한다는 것을 읽었습니다. 스택에서 파일이 제거되고 다시 추가되는 것처럼 표시한다고 생각하지만 한 번 시도했지만 앞에서 언급 한 git이 일을 추적하는 방식으로 인해 여전히 기록이 유지되었다고 생각합니다.
누군가가 내가 올바른지 확인하는 데 여전히 도움이 될 것입니다. 질문을 잘못 이해했다면 죄송합니다.
이미 제거되거나 이동 된 파일을 git이 제거하도록하려면 다음을 입력하십시오.
git add -u
git
개별 파일의 기록을 추적하지 않으며 이동 및 복사를 특별히 처리하지 않습니다. 즉, 이동 또는 복사가 발생했음을 나타내는 특별한 메타 데이터가 없습니다. 대신 각 git 커밋은 작업 트리의 전체 스냅 샷입니다.
이동을 보려면 변경된 파일을 나열하는 옵션을 추가로 git log
제공 할 수 있습니다.-M
git log --summary -M
git
커밋 히스토리에서 인접한 트리를 살펴보고 각 커밋에 의해 이동 된 파일이 있는지 유추합니다.
복사본을 찾고 이름을 바꾸려면 -C
옵션을 사용할 수 있습니다.이 옵션을 두 번 제공하여 약간의 성능을 희생하면서 git이 가능한 복사본 소스를 찾기 어렵게 만들 수 있습니다.
git log --summary -M -C -C
참고 파일 기록을 저장하지 않는 자식으로 (단지 역사를 커밋), 당신이 한 경우에도 git rm
및 git mv
파일, 당신은 어떤 역사를 잃지 않을 것입니다. 경로에 대한 모든 변경 사항은 여전히 기록되고 git log
.
Git이 (보다 일반적인) 명시 적 이름 변경 추적 대신 이름 변경 감지 를 수행하는 이유 와 git log
경로 제한이 작동 하는 방식 을 더 잘 이해하려면 Git 의 유지 관리자 인 Junio C Hamano가 작성한 Linus의 궁극적 인 콘텐츠 추적 도구 블로그 게시물 (및 참조)을 읽어보십시오 .
새 파일을 git 외부의 이전 이름과 경로로 다시 이동 / 이름을 바꾼 다음을 사용 git mv
하여 이동 만 수행 할 수 있습니다. 예를 들어 bash에서 :
mv $NEW $OLD && git mv $OLD $NEW
그것의 다소 성가신 일을 당신이 손으로 그것을해야 특히,. 그러나 네임 스페이스 또는 클래스 이름을 변경하는 것과 같은 다른 변경 사항을 무단계로 남겨 두어 검사하고 의도 한 경우에만 준비 할 수 있다는 장점이 있습니다.
1 더 나은 대안을 찾길 바라며 답을 찾으면 업데이트하겠습니다.
예 : 나는 파일의 무리가 FOM 이동 oldDir
로 newDir
와 다른 변화에 적극적으로 시작했다. 이제 다른 수정 사항을 확인하고 싶습니다. 사용 자식 xargs를이 둔한 과 bash는이 한 줄에 다음과 같은 결과 :
git status --short |
gawk '/^\?\?/ && match($0, /newDir\/(*.\.cs)/, a) {print "newDir/" a[1] " " "oldDir/" a[1]}' |
xargs -n 2 bash -c 'mv $0 $1; git mv $1 $0'
이제 git status
이름이 "커밋 될 변경 사항"으로 표시되고 "커밋을 위해 준비되지 않은 변경 사항"아래에 텍스트 수정 사항이 표시됩니다.
파일을 이동하고 편집하면 더 이상 이동 파일로 인식하지 않고 새 파일로 인식하여 기록을 잃어 버렸습니다.
내가하는 일은 2 개의 분리 된 커밋을 만드는 것입니다. 하나는 파일을 이동할 때 하나는 파일을 편집하는 것입니다. 이런 식으로 나는 역사를 유지합니다.
참고 URL : https://stackoverflow.com/questions/1430749/getting-git-to-acknowledge-previously-moved-files
'developer tip' 카테고리의 다른 글
Hibernate Criteria API에서 SQL을 얻는 방법 (로깅을위한 * 아님 *) (0) | 2020.11.18 |
---|---|
ContextMenu의 MenuItem에서 ElementName 바인딩 (0) | 2020.11.18 |
float가 정수인지 확인 (0) | 2020.11.18 |
벡터 / 행렬 끝까지 우아한 인덱싱 (0) | 2020.11.18 |
bash 쉘 명령 행에 대한 매개 변수 -e의 의미는 무엇입니까? (0) | 2020.11.18 |