2011-09-27 1 views
0

오류 (프로그램 컴파일되지 않음)를 작성한 후 커밋했습니다. 작성한 후에는 git push (I)입니다.
동료가 완료했습니다. git pull (She) 이며 리파지토리의 상태가 컴파일되지 않았습니다. 그 어떤 커밋을 추가 한 후 (프로젝트 문서에 대해 - 컴파일 중요하지 않았다 위해) 다시 수행 : git push (She)
을 그 후 우리는 저장소의 상태를 다음 주 잖아 :git pull을 호출 할 때 로컬 커밋을 삭제하는 경우

  1. 일부 그녀는
  2. 일부를 저지 그녀
  3. 오류와 커밋 내 커밋
  4. 또 다른
    내가 3.를 저지 삭제 정확히 원하는 그리고 그것을 위해 내가
    git-rebase --onto <sha of commit 4> <sha commit 3> master
    를했습니다 커밋 내git push --force

이제 우리는 저장소가 올바른 상태 (커밋 3 없음)이지만 다른 모든 변경 사항이 있습니다. 그러나, 그녀는

git pull 
git push 

을한다면 그녀는 그녀의 지역 커밋 # 3와 합병 한 후 저장소에 당겨 할 것입니다. 자식 (git)을 사용하여 저장소 (repository)의 상태를 정정 한 후에, 누군가 (그녀뿐 아니라)를 어떻게 만들 수 있습니까?

참고 : 아마도 그녀는 (다른 경우에는 - 기능) 로컬 위의 커밋을 추가했을 것입니다. 그리고 그녀의 로컬 저장소는 서버의 저장소보다 새로운 것입니다.

답변

0

변경된 공개 기록과 관련된 변경 사항을 발견 한 사람은 누구나 동일한 방식으로 변경해야한다는 것을 알고 있어야합니다.

git-rebase --onto <sha of commit 4> <sha commit 3> master 

이 다시 리모트 마스터 브랜치에 동의하는 로컬 마스터를 업데이트하고이 지속될 수 :이 간단한 경우, 그들은 가능성 또한 당신이했던 것과 같은 rebase 명령을 수행하여 새 적절한 버전을 얻을 수 있습니다 표준.

자동으로 이러한 문제가 발생할 수는 없습니다. master을 단순히 추적하거나이 rebase를했을 때 만든 모든 변경 사항을 푸시 한 사용자가 git reset --hard origin/master을 실행하는 것일 수도 있지만 을 실행하면 master에없는 로컬 커밋을 지울 수 있습니다. rebase 했어 ​​.

같은 결과를 얻는 다른 방법은 git revert입니다. 이렇게하면 다른 커밋의 반대 인 새 커밋이 추가됩니다. 이것은 히스토리를 편집하지 않으며, 단순히 히스토리를 되돌릴 수있는 방식으로 추가합니다. 이로 인해 문제가 커밋되어 여전히 git log 및 관련 명령에 표시되지만 다른 모든 사용자에게는 문제가되지 않습니다.