2017-09-19 11 views

답변

0

나는 그것을 해킹 할 방법이 있습니다.

경고 : 아래의 단일 라이너를 사용하기 전에 커밋되지 않은 변경 사항을 모두 커밋/백업하십시오. 이 단일 라이너는 변경 사항을 숨기고 복원하려고 시도합니다. 하지만 여전히의 repo에서 약간의 혼란 (새 파일)을 도입하거나 일부 버그

아래 코드는 MERGE_COMMIT 다른 지점에 의해 도입 된 다른 파일에 대한 변경 사항을 제외하고 FIRST_COMMITSECOND_COMMIT 사이 DIFF 표시를 포함 할 수있다. env 변수 FIRST_COMMIT, SECOND_COMMITMERGE_COMMIT을 적절한 값으로 설정해야합니다.

FIRST_COMMIT=866dfa2a7 
MERGE_COMMIT=94b195989 
SECOND_COMMIT=0fc856fd9 

git stash ; \ 
git checkout $FIRST_COMMIT ; \ 
git ls $MERGE_COMMIT..$SECOND_COMMIT | sort | \ 
uniq | \ 
xargs -L 1 git checkout $SECOND_COMMIT -- ; \ 
git difftool -d $FIRST_COMMIT ; \ 
git stash && git stash drop ; \ 
git stash apply 

이 단일 라이너 기능 :

  • FIRST_COMMIT
  • 에서 코드 상태를 stash
  • 검사를 이눔 현지 않은 변경을두고 모든 파일이 MERGE_COMMITSECOND_COMMIT 모든 버전에서 변경합니다 그 사이
  • 이전 단계의 모든 파일은의 시간에 해당 상태로 재설정됩니다.
  • 은 git 용으로 구성된 diff 도구를 사용하여 diff를 보여줍니다. diff는 FIRST_COMMITSECOND_COMMIT 사이에 있으며 다른 브랜치에 의해 도입 된 다른 파일은 MERGE_COMMIT으로 변경됩니다. 이전 문장은 어떤 파일이 SECOND_COMMITMERGE_COMMIT에 모두 수정 된 경우 모든 변경 사항이 diff에 있음을 의미합니다. 그것을 피하기가 어렵습니다.
  • diff 도구를 종료하면 git은 임시 변경 사항을 제거하고 작업중인 지점을 체크 아웃합니다.
  • 그 후 git stash의 변경 사항이 적용됩니다.

당신의 선호하는 자식의 흐름에 따라

위에 하나의 라이너에서 자식 숨김 호출을 제거하기로 결정할 수있다