2013-05-22 4 views
0

나는 서둘러서, 내가 망쳐 버렸기 때문에 이전 커밋에 재사용해야했다. git push를 사용하면 현재 브랜치가 원격 브랜치 뒤에 있다는 것을 알 수 있습니다. git을 실행하고 변경 사항을 원격 지점과 병합하면 코드가 다시 버그가있는 버전으로 다시 돌아갈 것입니다. 내가 원격 지점의 변경을 거부하고 대신 새 지점 만 유지하는 방법이 있습니까?git pull 후 리모트 변경 삭제하기

감사에게 많은 (그리고 난 원격 REPO에 대한 변경 사항을 밀어으로 돌아갈 수)

+1

강제로 밀어 넣을 수 있지만 별도의 지점에서 원격 작업을 저장하는 것이 좋습니다 ... git push origin -f master –

+2

['git push --force'] (https : // www. kernel.org/pub/software/scm/git/docs/git-push.html). 그것으로 아주 조심하십시오. – adrianbanks

답변

3

  • 만약 다른 사람이 게시 코드에 의존하지; 역사를 다시 작성하는 것은 의미이며,
  • 지역 지점은 원격 지점이 원하는 정확히 무엇이며, 다른
  • 아무도 그 사이에 어떤 변화를 추진하지 않았다.

git push -f origin <branch>

2

당신은 git push --force origin branchname을 할 수 있지만 분기가 공유되고있는 경우는 아마 최선의 해결책이 아닙니다.

다음번에는 git reset --hard을 수행하는 대신 내역을 변경해야합니다. 그렇지 않으면 커밋을 적용하여 원하는 작업을 취소해야합니다.

다행히도 git은 미친 짓이며 현재 가지고있는 것과 함께이 문제를 해결할 수 있습니다.

git branch good_tree   # save a branch with your recent commits 
git reset --hard last_good # reset working tree to fix pushed problem 
git fetch --all    # update local repo with remote changes 
git reset origin/master  # move pointer to where remote repo's master is 
           # without changing working tree from last_good 
git add; git commit; git push # commit fixed stuff 
git checkout good_tree  # rebase your changes from last_good 
git rebase master    # tack good_tree onto master from undone changes 
git checkout master   # go back to master 
git merge good_tree   # now you are back to where you want to be 
git push      # and you can push 

... 틱 - 당신은 충돌이있을 수 있습니다 : - (그것은 master를 호출 할 수 있습니다 당신은 결국 밀어 신경 분기부터 시작)

는이 같이 보입니다 수행합니다.