2013-09-26 4 views
1

나는 천개의 파일에 가까운 포함하는 코드베이스가 제거 된 경우에도, 변경된 파일을 참조하십시오. 커밋되지 않은 변경 사항이있는 로컬 지점에서 작업하고 있습니다. 한 지점 오늘 아침, 나는 정보의 매우 유용한 부분을 반환 하나 개의 파일에 error_log 문을 추가했다. 그걸로 끝난 줄 알았는데 로그를 지우고 파일을 "변하지 않은"상태로 되 돌린다. 그 로그를 다시 넣을 필요가 있지만, 내 인생에서 어떤 파일이나 기능이 그 부분인지 기억할 수는 없습니다.힘내 - 변경

나에게 변경 사항이 제거 된 경우에도 그 변경 사항을 가지고있는 파일의 목록을 보여줄 수있는 모든 자식 명령이 있나요?

+0

가능한 복제본 [Git recover uncommitted changes] (http://stackoverflow.com/questions/3240436/git-recover-uncommitted-changes). 거기에 도착하는 다른 방법,하지만 불행히도 자식은 당신을 말할 수 없습니다. [자주 커밋] (http : //en.wikibooks.org/wiki/Commit_Often, _Perfect_Later, _Publish_Once : _Git_Best_Practices/Commiting_early_and_often)! – cmbuckley

답변

4

나는 git에서 그것을하는 방법이 없다고 생각하지만, 수정 된 순서대로 파일을 재귀 적으로 나열 할 것이다. 리눅스에서 당신이

ls -ltrR

처럼 뭔가를 할 수 있어야한다 그래서 당신은 파일이 방법을 찾을 수 있습니다. 어떤 것보다 낫다.

+0

감사합니다. 불행히도 우리는 Windows가 아니라 Linux입니다. 그리고 파일은 단일 폴더에 없습니다. 서브 폴더가 너무 많아 수정 날짜별로 전체 코드베이스를 정렬 할 수는 없습니다. – EmmyS

+1

@EmmyS이 접근법은 Windows에서도 잘 작동합니다. Windows 탐색기를 사용하면 하위 디렉터리를 비롯한 파일을 검색 할 수 있으며 발견 한 모든 것을 하나의 큰 목록으로 제공합니다. 이 창에서 수정 시간별로 정렬 할 수 있어야합니다. – hvd

-1

커밋되지 않은 변경 항상 나쁜. 항상 작은 단계로 작업하고 각 단계를 완료 한 후에 커밋해야합니다. - 커밋은 로컬에만 적용되며 나중에 문제없이 부숴 질 수 있습니다. 당신은 항상 다시 각 단계로 갈 수있는 작은 확정 단계

. - 커밋없이 git은 변경 복구에 도움이되지 않습니다.

따라서 당신은 자식의 외부보고있다. 파일 시스템의 타임 스탬프 또는 편집기의 일부 로그와 같습니다.

+0

강의 감사드립니다. 그것은 실제로 질문에 답하지 않고 문제가되지 않습니다. 내 커밋은 괜찮아. 내가 아무 것도 해결하지 못했을 때 커밋의 요지는 보이지 않는다. – EmmyS

+0

git 명령을 요청했습니다. - 가정 진실은 : 없다. (git은 당신이 커밋하지 않는 한 당신의 변경 사항에 대해서 전혀 모른다.) – michas

+0

그러면 git 명령이 없다는 코멘트를 추가해야한다. 당신의 "대답"은 대답이 아닙니다. – EmmyS

0

언제든지 error_log 행을 저장소에 맡기면 기록의 해당 행이 여전히 존재하며 여러 가지 방법으로 복구 할 수 있습니다. 다음 당신은 할 수

git log -p 
# While in `less` 
/error_log 

: 가장 정직하고 단순히 git log에 패치 출력을 사용하는 것입니다, 출력이 less 호출기에 전달되는 것을 가정, 당신은 단순히 /을 쳐서 그 라인에 대한 정규식을 입력 다음 히트로 넘어가려면 n을 누르거나 마지막 히트로 돌아 가기 위해 N을 입력하여 정규 표현식의 출력을 검색하십시오.

줄의 존재를 확인하는 또 다른 방법은 -S 또는 -G 옵션을 git log에 사용하는 것입니다. 추가 또는 고정 된 문자열을 사용하여 텍스트의 삭제 이전 검색하고, 후자는 또한 정규 표현식에 사용하는 반면 :

# Fixed string 
git log --name-status -S "error_log" 

# Regex 
git log --name-status -G "error_log" 

출력 중 하나가 error_log가 그들을로부터 추가 또는 제거 문자열 있었다 파일의 목록이됩니다 어떤 시점.