2017-09-17 7 views
-1

저장소의 두 디렉토리간에 diff를 만든 다음이 diff를 커밋으로 저장하려면 어떻게해야합니까?repo의 두 디렉토리 사이에 diff를 작성한 다음 diff를 커밋으로 저장하는 방법

EDIT1 : 사용 사례 : 거의 모듈 기반이 아닌 Moodle이라는 소프트웨어가 있습니다. 각 기능은 다른 디렉토리에 있습니다. 필자가 수행 한 각 기능을 사용자 정의하여 유지해야하며 공식 소프트웨어가 출시되면 변경 사항을 새 릴리스에 통합하려고합니다.

EDIT2 : 원본 릴리스에는 v2.7.0 태그가 있습니다. 30-40 개의 디렉토리를 사용자 정의로 변경했습니다. 이제 v2.7.0과 비교하여 모든 변경 사항을 커밋합니다. 한 번에 v3.2.0을 릴리스하기 위해 병합을 수행하는 것은 너무 많은 작업입니다. & 충돌 해결. 그래서 변경 사항을 디렉토리 (기능)로 분할했습니다. 그런 다음 v3.2.0 이상의 변경 사항을 리베이스 할 때 기능/디렉토리 변경을 하나씩 리베이스 할 수 있습니다. 지금하고 싶은 일이 있습니다.

지금은 더 분명 해졌기를 바랍니다.

+0

[XY 문제] (https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)와 같은 느낌입니다. 이 일을 통해 무엇을 성취하려고합니까? – Chris

+0

각 디렉토리의 파일 수와 이름이 같지 않으면 사용자의 요청이 의미가 없습니다. 한 디렉토리를 다른 디렉토리처럼 보이게하려면 관심있는 모든 파일을 체크 아웃하지 않는 것이 좋습니다. –

+0

심지어 각 디렉토리에있는 파일의 수와 이름이 같아도 이치에 맞지 않습니다. 디렉토리를 비교하고 "diff를 커밋으로 저장"하는 것이 가능한가? 그게 무슨 뜻이야? – Chris

답변

0

당신이 원하는 것은 Git에서 조금 드물고 이상합니다. diff가 가능합니다. 기술적으로 Git은 tree 객체를 사용하여 추적 된 디렉토리를 설명합니다. Git에는 여러 개의 tree-ish 참조가 있으며 그 중 하나는 ref:directory입니다. git-diff은 임의의 두 개의 무작위 추적 폴더 (동일한 Repo가 아님)를 비교할 수 있습니다. 레포가 두 개의 폴더, foo/bar/을 추적했다고 가정합니다. 이제 지점에 있습니다 master. foo와 bar의 diff는 사용자의 요구에 따라 git diff master:foo master:bar 또는 git diff master:bar master:foo을 통해 만들 수 있습니다. diff는 패치로 저장 될 수 있으며 패치는 부분적으로 또는 완전히 적용될 수 있습니다. 패치가 성공적으로 적용되면 변경 사항을 추가하고 커밋 할 수 있습니다.

+0

EDIT1 및 EDIT2가 추가되었습니다. – klor