2009-07-29 3 views
8

이것은 Git가 사용하는 이슈 트래커/포럼에서의 문제로 더 적합 할 수 있지만, 내가 처음으로 확인/설명을 얻을 것이라고 생각했다.자식이 추가/제거를 이름 바꾸기로 취급합니까?

나는 설치 프로그램 실행 파일을 추적하는 레포를 가지고있다.

foo-1.0.exe가 이미 repo에 있다고 가정 해 보겠습니다.

이제 foo-2.0.exe를 동일한 디렉토리에 추가하십시오 (git add foo-2.0.exe). 그런 다음 foo-1.0.exe (git rm foo-1.0.exe)를 제거합니다.

힘내차게 나는 한 파일과 하나의 파일을 보여줄 것으로 기대하고있다. 대신,이 얻을 : 지점 마스터
변경 커밋에


:
(사용 "자식 재설정 HEAD를 ..."unstage하는)
이름 : foo는-1.0.exe - > foo2.0.exe 나를 위해 무슨 일있어

... 힘내 2.0 1.0 업데이트가 있음을 추측 발견의 일종을 사용하고 ... 나는 그 의미를 수있는 방법을 볼 수 있지만 내가 할 수 이 경우에 그렇게하고 싶지 않다고 생각하지 마십시오.

+1

btw, 저는 소스 코드에 대해서만 버전 제어를 사용합니다. 당신이 좋은 빌드 시스템을 가지고 있다면, 실행 파일은 재현 가능해야합니다. – yairchu

+0

하하. 네, 저도 알아요. 그렇게해야합니다. 귀사의 멋진 원 클릭 빌드는 이러한 부분을 환영하지 않습니다. 10 년 정도면됩니다. (일부 설치 프로그램은 타사 앱 임) – fakeleft

답변

15

당신이 옳다는 점은 경험사가 추론을 사용하고 있다는 것입니다. Git은 내용 만 추적하므로 리포지토리에는 foo-1.0.exe이 있었고 이제는 foo-2.0.exe이 있습니다. 귀하의 사례에서 git status은 사용 가능한 정보를 으로 추측합니다.은 이름이 바뀌었을 수도 있습니다 (약간의 변경 사항이 있지만 두 파일은 비슷한 것 같습니다). 이 추측은 저장소에 기록 된 내용에는 영향을주지 않습니다.

델타가 아닌 콘텐츠 만 추적한다는 철학은 Git이 저장소 기록을 탐색하는 데있어 더 우수하고 향상된 도구를 제공 할 수있게합니다. 결국 Git은 이름 변경이나 리팩토링 또는 기타 코드 수정을 통해 함수 또는 라인 수준에서 특정 코드 비트의 진화를 추적하는 방법을 제공합니다. 저장소가이 정보를 미리 저장하지 않고도이 작업을 수행 할 수 있습니다.

+0

아마도 이름을 자동 감지하도록 힘내를 설정했을 것입니다 ('diff.renames'). –

+0

@ Jakub - 예상대로 작동하는 경우 댓글을 답으로 받아 들일 수 있습니다. 나는 곧 시험 할 것이다. 그렉, 전반적인 통찰력에 감사드립니다. – fakeleft

+0

그래 ... 글쎄 ... 내 경우에는 자식이 완전히 틀렸어 그런 일이 벌어지는 것을 막는 법을 알면 좋았을 텐데. –

관련 문제