2016-09-11 3 views
2

나는 우리가 모든 것을 밀어 dev 가지를 가지고 있습니다. 마지막 커밋은 우리의 전체 빌드를 깨뜨리고 같은 것을 제거해야합니다. 지역을 위해 나는 지역의 repo 잘 작동원격 자식에 커밋을 삭제

git reset --hard <SHA_ID>

을 사용하지만 밀어하려고 할 때 현재 브랜치의 끝이 원격 뒤에 나를 다시 밀어 전에 git pull를 사용하여 보여주기 때문에 변경 사항이 거부됩니다.

내 질문은 원격지를 내 로컬 저장소와 동일한 HEAD로 이동시키고 마지막 커밋을 삭제하는 방법입니다. 이것은 당신이 꽤 될 수 있으므로,하지만 나쁜 연습 간주됩니다

$ git push origin --force 

참고 :

+1

강제 밀기? 또는 되돌리려 고 시도하는 대신 명시 적으로 변경을 롤백하는 커밋을 푸시하십시오. – jonrsharpe

답변

3

는 동일한에 대한 원격 지사가 지역의 repo에 커밋 "재설정"로 --force 인수를 사용할 수 있습니다 이 지점에 의존하는 사람들을위한 혼란. 더 친숙한 접근법은 실수로 커밋을 인정하고 git reset으로 "발생하지 않은 것처럼 행동"하려고 시도하는 대신 git revert으로 수정하는 것입니다.

+0

10 분이 지나면 수락 할 수 없습니다. 도움을 주셔서 감사합니다 :) 또 하나의'git reset' 명령은 올바르게 커밋되지 않은 파일들에 대해서만 존재합니까? 우리는 이미 커밋을하고 원격으로 그 파일들을 밀어 넣었습니다. – georoot

+0

@georoot 나는 당신의 후속 질문을 이해하지 못합니다. 'git reset '명령을 사용하면 실제로 커밋을 모두 잃게됩니다. – Mureinik

+1

죄송합니다. 당신이'git reset. '이라고 썼지 만,'not'는 명령의 일부가 아닙니다. – georoot

관련 문제