2017-10-23 19 views
0

하위 디렉토리 (A)가있는 버전 관리가없는 프로젝트 디렉토리라고 가정합니다. 1 년 후 해당 디렉토리가 복사되고 추가 개발이 발생합니다 (A ').Overlay A 'project over earlier 프로젝트 : 더 이상 필요없는 파일을 삭제하려면 Git Use Case/Pattern을 찾으십니까?

이전 버전 인 Git을 Git에 추가했습니다. 버전 관리의 정신에서 A 파일을 복사하고 싶습니다 (결국 같은 프로젝트입니다). 그러나 A 이후 버전에서는 더 이상 존재하지 않는 파일을 체계적으로 삭제하려고합니다.

나는 인터넷으로 꽤 많은 시간을 보냈지 만 (내가 걸었던) 상황이 자주 발생하기 때문에 모범 사례를 찾을 수없는 것처럼 보이기 때문에 자주 잡는 방법에 대한 잘 알려진 "제조법"이 있기를 바랍니다. 사용자 정의 코드를 작성하지 않고도 사용할 수 있습니다.

git-diff --diff-filter = D ("Deleted")를 사용하여 A의 "residue"가 소스 제어에 더 오래 존재하도록 rm을 생성 할 수 있습니까?

+0

왜이 작업을 수행하려고합니까? 너는 무엇을 보존하려고 하는가? 당신이 대답하는 방법은 내가 더 나은 반응을 만들어내는 데 도움이 될 것입니다. – JDB

+0

@ JDB 다른 소프트웨어 프로젝트와 마찬가지로 버전 관리하에 동일한 프로젝트로 추적되는 초기 및 수정 된 릴리스를 원하십시오. –

+0

오 ... 그래, 할 우아한 방법이 없습니다. git 커밋의 히스토리를 수정하려는 것 같습니다. 그것은 가능하지만 매우 지저분 할 것이고 진행중인 모든 작업에 큰 문제가 될 것입니다. 'A' 프로젝트를 가지고 기본적으로'git init' 디렉토리를 만든 다음, 커밋을 추가하십시오. 그런 다음 출처를 설정하고 마스터 분기를 가져옵니다. 그러면 'A'로 마스터를 리베이스해야합니다. 그것은 주인을 기반으로 지점을 가지고있는 사람 (당신이 이미 가지고있는 개발자 또는 배포 지점 포함)에 대한 약간의 재앙을 일으킬 것입니다. – JDB

답변

0

따라서 AA'이 서로 다른 버전의 코드로 된 두 개의 다른 디렉토리이고 새로운 git repo를 만드는 경우 실제로는 매우 쉽습니다.

A 파일을 사용하여 git repo 설정을 이미 완료 했으므로 repo 디렉토리의 모든 항목을 삭제해야합니다 (물론 git 파일/폴더 제외). A', 그런 다음 새 커밋을 추가하십시오.

그래서, 당신의 자식 역사는 다음과 같이 보일 것입니다 :

z9y8x7w6v current state (A') 
a1b2c3d4e f1rst p0st (A) 

당신은 AA' 사이에 변화를 비교할 수 있습니다, 그러나 어떤 새로운 일이 A'로 떨어져 시작됩니다. 이것은 단지 당신이 당신의 자식 역사에 오래된 유물로 A을 가지고 있는지 확인합니다.

사이드 노트 : 지금 당장 생각해 보는 것이 좋습니다. 당신이 기다렸다가 어떤 작업이 완료된 후 의 레포에 들어가면 A을 기록에 넣는 것이 매우 어려웠을 것입니다.

+0

그게 간단합니까? Duh ... 고마워요 ~JDB! –