종종 heroku와 함께 작업하고 프로젝트가 끝날 무렵에 예기치 않은 버그를 수정하기위한 몇 가지 작은 커밋이 있습니다. 이로 인해 10 개의 작은 diff 커밋이 발생하여 하나의 reb 커밋을합니다. 문제는 이미 역사가 밀렸습니다. 어떻게 이러한 것들을 조정합니까?몇 번 푸시한 후에 git 히스토리를 rebase하는 방법은 무엇입니까?
답변
당신이하고 싶은 일은 사람들이 제안하는 것만 큼 멀지 않습니다. 공유 마스터 브랜치에 푸시 된 변경 사항을 리베이스하지 않고 비공유/작업 분기 또는 비공유 저장소로 보낸 변경 사항을 리베이스하는 것은 매우 일반적입니다. 많은 사람들이 무의미한 (그리고 아마도 불완전한/nonworking 커밋과) 프로젝트의 역사를 혼란시키는 것보다 더 나은 연습이라고 생각합니다.
자신에게 물어볼 질문은 "누군가가 내가 가고있는 지점에서 당길 것인가"입니다. 대답이 '아니오'인 경우, 그렇게하는 데 따르는 문제는 이론적 인 것이며 지나치게 혼란스러운 역사의 문제를 훨씬 능가합니다. 대답이 '예'라면, 당연히 그렇게하고 싶지 않습니다. 그러나이 경우 해당 저장소의 비공유 지점에서 배포 할 수 있는지 여부를 자문해야합니다. Work-in-progress 테스트 분기를 만들고, 커밋하고 자유롭게 리베이스하십시오. 당신이 일을 마쳤 으면, 마음의 내용에 rebase하고 좋은 커밋을 공유 된 지사에 밀어 넣으십시오.
! 가지를 만들어라. 데프. 감사! – dougvk
누군가 다른 사람이 당겨서 다른 기록을 남기면 어떻게 될까요? –
git-rebase
man-page : 다른 사람이 작업 한 기반을 기반으로하는 Rebase (또는 다른 형태의 재 작성)는 나쁜 생각입니다. 그것의 하류 사람은 그들의 역사를 수동으로 고쳐야한다.
일반적으로 아무 것도 누르지 않으면 리베이스하지 마십시오.
이미 푸시 한 후에는 내역 (rebase)을 다시 작성하면 안됩니다. 다른 누군가가 그 리모콘을 당겨서 리베이스하고 밀면, 끔찍한 끔찍한 병합 충돌이 일어납니다. 정말, 일반적으로
git push --force heroku master
그냥이 있음을 알고 : 당신이 정말은 (힘내는 기본적으로 거부합니다)을 리베이스 분기를 밀어하려면
이렇게 그렇게 나빠요? –
그렇게 나쁜 것은 아니지만 단일 저장소에서 사람들과 공동 작업을하는 경우 어려워집니다. 물론 – tjarratt
, 다음과 같은 명령을 사용할 수 있습니다 나쁜 아이디어, 다른 사람들이 이미 언급 한 이유로.
- 1. TCP가 몇 번 재전송합니까?
- 2. git rebase를 사용하여 뒤얽힌 히스토리를 정리하는 방법
- 3. git 파일 히스토리를 여러 파일로 저장
- 4. Xcode는 파일을 이동할 때 git 히스토리를 잃습니다.
- 5. 저장소 히스토리를 작게 유지하는 가장 일반적인 방법은 무엇입니까?
- 6. iPhone 앱이 몇 번 열렸는지 추적하는 방법은 무엇입니까?
- 7. 배열을 반복하고 연도를 한 번, 몇 달 후에 표시합니다.
- 8. AsyncTask가 onPreExecute 후에 몇 번 실행 한 다음에 종료됩니다.
- 9. git의 브랜치를 다른 브랜치에 적절히 rebase하는 방법은 무엇입니까?
- 10. 몇 밀리 초 후에 호버링 이벤트를 발생시키는 방법은 무엇입니까?
- 11. 게시 된 git 브랜치의 히스토리를 여러 단계로 재 작성하려면 어떻게해야합니까?
- 12. 파일이 몇 번 다운로드되었는지
- 13. 유니즌을 몇 번 설치해야합니까?
- 14. 여러 번 사용한 후에 Android에서 애플리케이션을 차단하는 방법은 무엇입니까?
- 15. `git pull` 후에`git checkout`이 필요합니까?
- 16. git pull 후에 수정 된 Git submodule?
- 17. 로그 파일에 특정 IP가 몇 번 나타나는지 찾는 방법은 무엇입니까?
- 18. 배열에 단어가 몇 번 나타나는지 찾는 방법은 무엇입니까? 파이썬
- 19. ASP.NET : 동일한 사이트를 몇 번 병렬로 열지 못하게하는 방법은 무엇입니까?
- 20. 클릭 몇 번 버튼을 찾아
- 21. 수많은 병합 후에 GIT 저장소를 관리하십시오.
- 22. 몇 초 후에 알림보기를 표시합니다
- 23. 몇 분 후에 SharedPreferences가 사라집니다.
- 24. 몇 초 후에 Webview에 URL로드
- 25. 몇 초 후에 비디오를 시작하십시오.
- 26. 히스토리를 유지하면서 git 서브 디렉토리를 추출하십시오. WITH WITH renames
- 27. Redmine 이슈 트래커에서 Git 커밋 히스토리를 표시하는 방법
- 28. 포크가있을 때 git 브랜치의 히스토리를 정상적으로 변경하는 방법이 있습니까?
- 29. 어떻게하면 git 저장소의 히스토리를 "검열"할 수 있습니까?
- 30. 몇 가지 결과를 얻기 위해 안드로이드 테스트 계측 테스트 케이스를 몇 번 대기하게하는 방법은 무엇입니까?
다른 사용자가 가져 오거나 가져 오는 커밋입니까? 즉, 공유 저장소입니까 아니면 지금까지만 사용하는 배포입니까? – wadesworld
@wadesworld 아래의 두 답변에 대해서는 공유 저장소가 아니어도 좋지 않습니다. 이것은 들어갈 수있는 습관이 아니며, 내가 그것을해야한다고 생각한 것을 발견하면, 저의 결론을 이끌어 내 전제에 의문을 제기 할 것입니다. – tjarratt
흥미 롭습니다. 내 문제가 일반적인 문제가 아닌가? 사람들은 총알을 피하고 여러 번 커밋을 유지합니까? – dougvk