2017-12-22 21 views
1

내 준비 지점에서 migrations_lar에 마이그레이션 파일이 하나있는 폴더를 커밋했습니다. 나는 11 월 29 일에 그것을 추가 한 곳에 커밋을 발견했다. 지금 준비 지점을 보면 migrations_lar 폴더가 모두 사라졌습니다. 그것이 언제 사라 졌는지 알아야합니다. 나는 또한 사라진 것이 있는지 알고 싶다. 여기 Github에서 내 폴더가 손실되었습니다.

내가 배운 것입니다 :

는 내가 폴더 메시지 "파트너은 webhook 구현"가 추가 된 경우 커밋 git log -- database/migrations_lar

git log -- database/migrations_lar을 달렸다. 다른 모든 커밋은 폴더를 삭제하지 않습니다. enter image description here 가 내 커밋이없는 행을 강조하고 migrations_lar 폴더가 없습니다 :

내가 GitHub에 타고 다양한 커밋 후 준비 지점의 상태를 확인, 나는 폴더가 표시 정기적으로 사라지는 것을 알 수있다. 하단 커밋은 파일이없는 오래 전에 처음 생성되었을 때 migrations_lar 폴더를 갖습니다.

나는 이것이 어떻게, 언제, 어떻게 잃어 버렸는가, 그리고 무엇이 길을 잃었는지에 대해 완전히 혼란 스럽다. 어떤 도움이 필요합니까?

업데이트

개월 전 그것에 Laravel의 기본 마이그레이션으로 migrations_lar 폴더를 추가했다. 어떤 시점에서 누군가가 파일을 삭제하고 따라서 폴더.

11 월 29 일에 폴더와 새 이전을 추가했습니다.

그 후 어떤 시점에서 누군가 원래의 삭제와 잘못된 병합을 만들었습니다. 어떻게 된 일인지 모르겠습니다. 그 파일이 삭제되었을 때 보여주는 커밋을 어떻게 찾을 수 있는지에 대한 단서?!

+1

당신은 아마 알고있을 것입니다.커밋 중 하나가 파일을 삭제합니다. 힘내는 폴더를 추적하지 않으므로 폴더의 파일을 삭제하면 해당 폴더도 삭제됩니다. 병합은 파일이 반드시 사라져서 역사에 다시 나타나는 것은 아니라는 것을 의미합니다. 잘못된 병합 커밋도 삭제했을 수 있습니다. 'git log --stat'를 시도하십시오. – Ryan

+0

@ 라이언 귀하의 도움에 감사드립니다. 자식이 폴더를 관리하지 않는다는 것을 알고 있으며 삭제 된 커밋이 있어야합니다. 나는 하나를 찾을 수 없다. 100 가지가 넘는 커밋이 있으며 그 중 많은 것을 통과했습니다. 나는 또한 그것이 나쁜 병합 커밋이었다고 의심하지만, 그것은 그 커밋에 대한 변화에서 보여줄 것인가? 잘못된 병합의 가능한 원인에 대한 업데이트를 읽으십시오. – ajon

+1

양분을 사용해 보았습니까? – Ryan

답변

1

감사합니다. @ 라이언. 문제를 일으킨 커밋을 찾기 위해 git bisect를 시도했습니다. 그리고 그것이 도움이되었다고 생각합니다. 나는 그것이 커밋을 확인했다고 생각하지만, 나는 그것을 무시했다.

그런 다음 폴더가있는 커밋을 찾을 때까지 git checkout HEAD^; ls database/migrations_lar을 호출했습니다. 오류 커밋의 커밋 문자열을 발견하고 git show https://github.com/completesolar/HelioTrack/commit/226d0b8f940a7bec524360a0f631d87f46dfaab8을 실행했습니다.

과연 나는 내가 끌어 오기 요청을 합병이 있었다 커밋 실현 그런

...017_11_28_100558_create_organizations_table.php | 54 --- 

을 보았다. 그 풀 요청을 검토하고 충분히 코드 검토에서 그 전체를 놓친 것입니다. 풀 요청에서 풀 요청 (Pull Request)에 대한 30 개의 커밋을 리부팅하고 실패한 병합 실패를 발견했습니다.

1

bisect 옆에있는 또 다른 방법은 삭제에 초점을 맞춰 git log입니다.
맥에 "Find when a file was deleted in Git"

git log --diff-filter=D --summary | \ 
    sed -n '/^commit/h;/\/some_dir\//{G;s/\ncommit \(.*\)/ \1/gp}' 

참조 : 폴더 내 파일이 사라 모든 커밋을 나열합니다

git log --diff-filter=D --summary | \ 
    sed -n -e '/^commit/h' -e '\:/:{' -e G -e 's/\ncommit \(.*\)/ \1/gp' -e } 

.