참고 : git push -f
개의 질문은 일반적인 것으로 알고 있지만,이 특정 질문에 대한 답변은 어디에서나 쉽게 찾을 수 없습니다. 내 문제를 다소 해결하는 것만이 아니라 포괄적 인 대답을 원합니다. 문제의 끝에서 나는 해결책을 스스로 제시한다.git push -f : 다른 사람들이 따라 잡을 수있는 방법은 무엇입니까?
저는 (직장에서) 가지 않아야 할 부분에 몇 가지 변경 사항을 적용했습니다. 나는 이미 git revert
을 변경했지만, 팀 코디네이터 중 한 명이 사실 git reset <old commit> && git push -f
을 원했기 때문에 회귀 커밋에 의해 역사가 어지럽게 흩어지지 않았습니다. 해당 지사를 사용하는 사람은 거의 없으므로 위험할만한 가치가 있다고 생각했습니다.
그것은 효과가 있었지만 이미 내 커밋을 가져온 사람들이 실수로 원격 지점을 다시 앞으로 감쌀 수 있습니다. 역사는 아직 갈라지지 않았기 때문에 (단지 오래된 커밋으로 재설정되었지만, 그 위에 다른 커밋을하지 마십시오).
내가 git reset <old HEAD commit> && git status
인데 힘내라는 말은 origin/<branch>
보다 앞섰기 때문에 내가 git push
이라고 다시 말하면, Git은 그냥 빨리 감기합니다.
git pull
은 repo가 최신이며 되돌릴 수 없다 (이는 어쨌든해야한다고 생각하지 않음)라고합니다. 그렇다면 모두가 오른쪽 헤드로 돌아가 origin/<branch>
에 있고 거기에서 일하도록해야합니까? 해당 지점에서 작업을 재개하기 전에 모두에게 git reset origin/<branch>
을 요청해야합니까? 나는 정말로 더 쉽고 오류가 적은 것을 원했다.
공유 저장소에서 지점을 재설정하지 말아야한다는 것을 알고 있지만 어떻게되는지 알고 있습니다. 때때로 당신은 모험심을 느낍니다. 또는 상급자가 당신에게 그것을 요청했는데 잘못되었다는 것을 알지만 어쨌든 교육적인 경험이 될 수 있습니다 : P
맞습니다.하지만 잘못된 HEAD에 갇혀 있거나 역사를 저질렀을 때를 대비해서 내가 정확히 무엇을해야한다고 말합니까? 'git reset origin/'이라고 그냥 말해야합니까? 자신의 변경 사항이 패치에 저장되기 전에 올바른 커밋 이력에 다시 적용될 수 있습니다. –
이것이 거의 확실한 답이라고 생각합니다. 합법적 인 커밋 만 리베이스 된 방식을 지정할 수 있습니까?rebase 할 커밋 범위를 지정하는 방법은 무엇입니까? –
아,'-i'은 대화식으로 만들어서 이미 rebase 할 대상을 선택할 수 있습니다. 고마워, 나는 당신의 대답에 그것을 추가 할 것이다. –