2012-01-12 2 views
1

커밋 내역에 문제가 있습니다. 실제로 문제가되지는 않습니다. 문제에 영향을 미치지 않기 때문에 시각적 인 문제입니다. 기본적으로 나는 CakePHP 프로젝트에서 일하고 있는데, CakePHP를 서브 모듈로 추가하려고 할 때 꽤 혼란 스러웠다.하지만 포기했다. 문제는 내 역사는 지금 (타워)이 보이는 것입니다 : 당신이 볼 수 있듯이깨끗한 자식 커밋 내역

Screenshot from Tower

는, 라인이 정지하고 다시 시작하고, 모든 CakePHP의 역사는 거기 전에, 그 자식 저장소 중 하나 . 모든 것을 제거하려면 어떻게해야합니까?! 감사.

답변

1

실수로 CakePHP를 서브 모듈로 추가하는 대신 프로젝트에 직접 가져온 것처럼 보입니다. 가장 간단한 방법은 전체 repo를 삭제하고 다시 시작하는 것입니다 (또는 새 repo를 만들고 기존 분기에서 master 분기 만 가져 오는 것일 수 있습니다). CakePHP 가져 오기로 남겨진 모든 참조를 삭제할 수도 있지만 몇 가지 작업이 될 것입니다. 그리고 몇 개월 동안 저장소에 개체를 남겨두고 어쨌든 새로운 프로젝트 인 것처럼 들립니다. 관심있는 커밋을 새로운 저장소로 끌어 오면 더 간단해질 수 있습니다.

단지의 마스터 분기를 포함하는 새의 repo를 만들려면 사용자를 기존 다음과 같이 작동합니다 :

mkdir newRepo 
cd newRepo 
git init 
git fetch ../oldRepo/.git master:temp 
git reset --hard temp 
git branch -d temp 

이 만 master 지점과 아무것도를 가져옵니다. temp의 비트는 그렇지 않으면 자식이 아닌 다른 저장소의 HEAD로 가져 오기를 거부하기 때문입니다. 당신이 신선한 REPO을 일단 어떤 경우

는, 당신은 단지 서브 모듈을 추가

git submodule add git://url/for/CakePHP.git path/to/submodule 

을 사용할 수 있어야합니다.

+0

예. 커밋이 온라인에서 내 repo에 나타나지 않기 때문에이 작업을 수행 할 것입니다. 단지 체크 아웃 만 할 것이므로, 커밋을하지 않고 현재 커밋을 보존 할 것입니다. 팁 주셔서 감사합니다! :) – entropid

1

글쎄 git rebase -i을 사용하여 대화 형 rebase 모드로 들어갈 수 있습니다. 유지하려는 커밋, 병합 할 대상 (squash) 및 완전히 제거 할 커밋에 의해 적용된 변경 사항이 제거됩니다 레포). 그러나 기록을 공유하지 않은 경우에만이 작업을 수행해야합니다. 역사가 바뀌고 오래된 역사를 가진 누군가가 새로운 것을 끌어 오거나 병합하려고 시도하면 병사가 역사 사이의 어떤 연결도 감지하지 못하기 때문에 아주 심각한 병합 충돌을 일으킬 것입니다.

+0

문제는 그 커밋이'git rebase -i'에 나타나지 않는다는 것입니다. 나는 벌써 노력했다. :( – entropid

+2

@Entropy :이 경우 제거하려는 커밋과 이미 시도한 바를 조금 더 알려주고 싶을 수도 있습니다 (예 :'git rebase -i'는 정확히 어떻게 호출 했습니까?) – Grizzly

관련 문제