2016-09-25 2 views
1

특정 커밋으로 재설정하고 싶습니다. git reset --hard Head~5 명령을 사용하여 로컬을 재설정했습니다. 나는 약간의 변화를 만들고 지금은 밀어주고 싶다. 그러나 나는 Updates were rejected because the tip of your current branch is behind을 얻는다. 그렇지 않으면 나는 가장 최근의 커밋으로 되돌아갑니다. 어떻게 재설정합니까?특정 커밋으로 되돌리기 만 할 수는 없습니다.

답변

3

강제로 밀어 낼 수는 있지만 문제가 될 수 있습니다.

다른이 사람들이이 레포에서 일하고 있습니까? 원격지에서 커밋을 지우고 싶으십니까?

git push -f origin branch-name 방금 ​​변경 한 내용과 일치하도록 원격 지점을 업데이트합니다.

하지만 이렇게 할 때주의해야합니다. 같은 지점에서 일하는 동료가있는 경우 이미 변경 사항을 가져온 경우에 대비해야합니다. 게다가 그들은 당신이 무시하려는 다른 변화를 추진했을지도 모른다.

+0

이 지점에서 작업하고 있습니다. 그것은 주요 dev 지점에서 작은 지점입니다. – KexAri

+0

그럴 경우 강제로 누르는 것이 안전 할 것입니다. – bcmcfc

+0

그리고'reset'과 강제 push가 커밋 이력을 지우지 만 되돌릴 때 그것을 지우는 것이 맞습니까? – KexAri

3

git push --force을 수행해야합니다 (항상 권장되는 것은 아니며 아래 참조).

강제 강제 권한이없는 경우 커밋을 다시 설정할 수 없으며 대신 reverting을 시도하십시오.

브랜치가 주요 개발 브랜치이거나 다른 개발자가 이미 가져온 경우 커밋을 재설정하고 권한 문제와 상관없이 푸시하는 것은 위험한 일이며 git revert이 더 좋은 옵션이라는 점에 유의하십시오. . 이 되돌아갑니다

git revert Head~5..HEAD 

HEAD~4, HEAD~3, ..., 그리고 HEAD으로 표시 커밋 :

은 예제의 자식 되돌리기 상당 ( git reset --hard HEAD~5)입니다. 기존 커밋을 유지 한 다음 되돌리기 커밋을 맨 위에 추가합니다. 당신의 경우 5 회 되돌리기 커밋을 더하는 커밋 당 되돌리기 커밋이 1 개 되돌려집니다.

당신이 커밋 직접 관리하려는 경우 그들을 확인하지 않고 로컬 브랜치의 변경 사항을 되돌아갑니다 있도록 -n 옵션을 사용하여 (예를 들어, 대신 5 커밋 하나에 모두 복귀) :

git revert -n Head~5..HEAD 

그러면 로컬 지사에서 미결 된 변경 사항을 커밋해야합니다.

git reset 아직 푸시되지 않은 로컬 커밋을 재설정하는 경우 안전합니다. 푸시 강제 권한이 있고 초기화하려는 커밋을 풀어 본 사람이 아무도 없다고 확신하는 경우 로컬로 재설정 한 다음 밀어 넣기를 수행 할 수 있습니다.

이미 푸시 된 커밋의 경우 git revert은 내역을 변경하거나 다른 팀 구성원이 이미 가져온 커밋을 제거하지 않기 때문에 git reset보다 안전합니다. 되돌릴 때 문제가 발생하는 경우 (예 : 해결 방법을 모르는 분쟁이있는 경우) 항상 git revert --abort으로 작업을 중단 할 수 있습니다. 자세한 내용은 git revert documentation page을 참조하십시오.

+0

되돌리기는 어떻게합니까? – KexAri

+0

@KexAri가 답변을 업데이트했습니다. –

관련 문제