program tip

힘내가 잘못된 분기로 당겨

radiobox 2020. 11. 13. 08:01
반응형

힘내가 잘못된 분기로 당겨


저와 다른 한 명의 개발자는 우리의 작업을 도구 작업이라는 비 마스터 브랜치로 통합하고 밀어 붙였습니다. 그렇게하면 나머지 팀원들에게 영향을주지 않았습니다. 제 토픽 브랜치는 DPM-93이고 제 git 워크 플로우는 이것입니다.

# do some work
git checkout DPM-93
git commit -m "did some work"

# catch up
git checkout toolwork
git pull origin toolwork

# rebase my topic branch
git checkout DPM-93
git rebase toolwork

# merge and push my changes
git checkout toolwork
git merge --no-ff DPM-93
git push origin toolwork

실수로 이러한 git 명령을 실행할 때까지 대부분 잘 작동했습니다.

git checkout toolwork
git pull origin master

그 시점에서 브랜치 도구 작업에 많은 새로운 항목이 나타 났으며 작업 공간을 삭제하고 저장소에서 다시 복제하는 것보다이를 제거하는 방법을 잘 모르겠습니다.

당기기 전 상태로 되돌릴 수있는 방법이 있습니까?


git reset --hard ORIG_HEAD 

로부터 git resetman 페이지 (그냥 풀을 한 경우)

병합 또는 끌어 오기 실행 취소

$ git pull                         (1)
Auto-merging nitfol
CONFLICT (content): Merge conflict in nitfol
Automatic merge failed; fix conflicts and then commit the result.
$ git reset --hard                 (2)
$ git pull . topic/branch          (3)
Updating from 41223... to 13134...
Fast-forward
$ git reset --hard ORIG_HEAD       (4)
  1. 업스트림에서 업데이트를 시도하면 많은 충돌이 발생했습니다. 지금 병합하는 데 많은 시간을 할애 할 준비가되지 않았으므로 나중에 병합하기로 결정했습니다.
  2. " pull"은 (는) 병합 커밋을 수행하지 않았으므로 " git reset --hard"의 동의어 인 " git reset --hard HEAD"은 인덱스 파일과 작업 트리에서 엉망을 제거합니다.
  3. 주제 분기를 현재 분기에 병합하면 빨리 감기가 발생합니다.
  4. 그러나 토픽 브랜치는 아직 대중이 사용할 준비가되지 않았다고 결정했습니다.
    "pull"또는 "merge"는 항상 현재 브랜치의 원래 팁을에 남겨 두ORIG_HEAD 므로 하드 재설정하면 인덱스 파일과 작업 트리가 해당 상태로 돌아가고 브랜치의 팁이 해당 커밋으로 재설정됩니다.

참조 HEADORIG_HEAD 이상.


마스터 분기 재설정 :

git reset --hard origin/master

You can use git log to find the SHA-1 of the revision you want to be at the head of your toolwork branch, then use git reset --hard <SHA1> to revert your working copy to that revision.

Back everything up first! And re-read the man page for git reset to make sure it's doing what you want.

EDIT: Oh yes, ORIG_HEAD should contain the right SHA-1. But check first.


I did a similar thing recently, and used a simpler solution based on this answer.

Assuming that the state of the toolwork branch that you want to revert to has been pushed to origin, you can simply do

git fetch origin
git reset --hard origin/toolwork

In my case, the value of ORIG_HEAD had been overwritten by another merge on a different branch, and doing this I didn't have to worry about searching for the correct commit in the log.


What worked for me is simply

git reset --hard

I did this from the local repository with the unfortunate merge/pull:

Laptop@LAPTOP-xxxxxxxx /d/Google Drive/xxxxxxx/Github/xxxxx (staging_ec2|MERGING)
$ git reset --hard
HEAD is now at 2d5a511 [last commit comment]

Laptop@LAPTOP-xxxxxxxx /d/Google Drive/xxxxxxx/Github/xxxxx (staging_ec2)
$

참고URL : https://stackoverflow.com/questions/3998881/git-pull-into-wrong-branch

반응형