2014-12-01 2 views
2

질문 제목을 사용하면 A에 저장된 파일을 어떻게 간단하게 복원 할 수 있습니까?힘내 : 지점 A에 저장된 파일을 B에서 삭제 된 파일로 복원

파일은 기능 브랜치에 있습니다.이 기능 브랜치는 파일을 유지 관리하기 위해 만들어졌습니다.

나는 지금 내 (STABLE) 지점의 모든 변경 사항을 갖고 싶어하지만, (STABLE)에 feature_x의 간단한 병합은 삭제 된 파일이 포함되지 않습니다. 내 생각 엔 git이 해당 파일이 삭제되었음을 감지하여 변경 사항이 devel과 관련이 없다.

솔루션에 devel의 모든 rm 커밋의 복귀가 포함되지 않기를 바랍니다 (분기의 아웃소싱은 매우 선형 적이 지 않습니다).

EDIT : 파일이 아닌 내용 만 추적하기 때문에 되돌리기는 기록을 잃어 버립니다. 따라서 되돌리기 또는 체크 아웃 방법을 사용하더라도 상관 없습니다. IMHO와 동일합니다. 당신은 또한이 과정을 쉽게 할 수

git checkout feature_x -- filename 

:

답변

1

가 나는 추한하지만 간단한 뭔가 해결책이 될 수 알고 난 당신이 삭제 된 파일을 복원해야 할 거라고 생각

git checkout branchA 
for i in "$(git log feature..branchA --summary --diff-filter=D | grep "delete mode" | cut -d " " -f 5-)" ; do 
    git checkout feature -- "$i" 
done 
+0

체크 아웃을 사용하여 역사를 느슨하게하겠습니다. 되돌리기를위한 것이 아닙니다. 맞습니까? – marscher

+0

그 checkout은 간신히 "해당 파일을이 브랜치에서 복사" – DRC

1

하나 한 번에 되돌리기를 원하지 않는다면.

이 명령은 파일을 삭제하기 전에 커밋을 제공합니다.

git rev-list -n 1 HEAD -- [filename]

그런 다음 파일을 체크 아웃하고 평소와 같이 병합 할 수 있습니다 (이것은 다시보고 [파일 이름]을 변경 한 경우 가장 최근의 커밋 발견 할 것이다).