2012-01-03 7 views
3

종종 heroku와 함께 작업하고 프로젝트가 끝날 무렵에 예기치 않은 버그를 수정하기위한 몇 가지 작은 커밋이 있습니다. 이로 인해 10 개의 작은 diff 커밋이 발생하여 하나의 reb 커밋을합니다. 문제는 이미 역사가 밀렸습니다. 어떻게 이러한 것들을 조정합니까?몇 번 푸시한 후에 git 히스토리를 rebase하는 방법은 무엇입니까?

+0

다른 사용자가 가져 오거나 가져 오는 커밋입니까? 즉, 공유 저장소입니까 아니면 지금까지만 사용하는 배포입니까? – wadesworld

+0

@wadesworld 아래의 두 답변에 대해서는 공유 저장소가 아니어도 좋지 않습니다. 이것은 들어갈 수있는 습관이 아니며, 내가 그것을해야한다고 생각한 것을 발견하면, 저의 결론을 이끌어 내 전제에 의문을 제기 할 것입니다. – tjarratt

+0

흥미 롭습니다. 내 문제가 일반적인 문제가 아닌가? 사람들은 총알을 피하고 여러 번 커밋을 유지합니까? – dougvk

답변

5

당신이하고 싶은 일은 사람들이 제안하는 것만 큼 멀지 않습니다. 공유 마스터 브랜치에 푸시 된 변경 사항을 리베이스하지 않고 비공유/작업 분기 또는 비공유 저장소로 보낸 변경 사항을 리베이스하는 것은 매우 일반적입니다. 많은 사람들이 무의미한 (그리고 아마도 불완전한/nonworking 커밋과) 프로젝트의 역사를 혼란시키는 것보다 더 나은 연습이라고 생각합니다.

자신에게 물어볼 질문은 "누군가가 내가 가고있는 지점에서 당길 것인가"입니다. 대답이 '아니오'인 경우, 그렇게하는 데 따르는 문제는 이론적 인 것이며 지나치게 혼란스러운 역사의 문제를 훨씬 능가합니다. 대답이 '예'라면, 당연히 그렇게하고 싶지 않습니다. 그러나이 경우 해당 저장소의 비공유 지점에서 배포 할 수 있는지 여부를 자문해야합니다. Work-in-progress 테스트 분기를 만들고, 커밋하고 자유롭게 리베이스하십시오. 당신이 일을 마쳤 으면, 마음의 내용에 rebase하고 좋은 커밋을 공유 된 지사에 밀어 넣으십시오.

+0

! 가지를 만들어라. 데프. 감사! – dougvk

+0

누군가 다른 사람이 당겨서 다른 기록을 남기면 어떻게 될까요? –

0

git-rebase man-page : 다른 사람이 작업 한 기반을 기반으로하는 Rebase (또는 다른 형태의 재 작성)는 나쁜 생각입니다. 그것의 하류 사람은 그들의 역사를 수동으로 고쳐야한다.

일반적으로 아무 것도 누르지 않으면 리베이스하지 마십시오.

2

이미 푸시 한 후에는 내역 (rebase)을 다시 작성하면 안됩니다. 다른 누군가가 그 리모콘을 당겨서 리베이스하고 밀면, 끔찍한 끔찍한 병합 충돌이 일어납니다. 정말, 일반적으로

git push --force heroku master 

그냥이 있음을 알고 : 당신이 정말은 (힘내는 기본적으로 거부합니다)을 리베이스 분기를 밀어하려면

+0

이렇게 그렇게 나빠요? –

+1

그렇게 나쁜 것은 아니지만 단일 저장소에서 사람들과 공동 작업을하는 경우 어려워집니다. 물론 – tjarratt

4

, 다음과 같은 명령을 사용할 수 있습니다 나쁜 아이디어, 다른 사람들이 이미 언급 한 이유로.

관련 문제