2012-02-19 2 views
6

요즘 나는 git으로 버전 관리되는 프로젝트에서 tiny_mce를 업그레이드했습니다. 그 당시 나는 변화를 위해 git branch를 만들었고 그것을 통합하여 branch를 삭제했다. 모든 것이 정상적으로 작동했습니다.git의 이상한 행동

또한 원격 리포를 다른 서버로 변경하고 .git/config를 변경했습니다. 그러나 나는 다음과 같은 실수를 한 것을 알았다.

[remote "new_repo"] 
    url = ssh://[email protected]/~/path/to/myproject.git 
    fetch = +refs/heads/*:refs/remotes/new_repo/* 
[branch "master"] 
    remote = old_repo <= WRONG 
    merge = refs/heads/master 

그것은 원격 new_repo = 이어야한다. 나는 나중에 그것을 고쳤고, 잘 작동하는 것처럼 보였다.

하지만 "git status"를 수행하면 이전 tiny_mce 파일이 새 것을 오버로드하고 변경된 목록에 있지만 커밋되지 않았습니다. 그래서 "git reset - hard HEAD"해야합니다. 내 프로젝트의 다른 복사본 (git을 통해 업데이트 됨)에서도 마찬가지입니다. 하지만 재현 할 수 없습니다. 임의로 발생하는 것 같습니다 (또는 아직 패턴을 찾을 수 없습니다.)

어떻게됐으며 어떻게 해결할 수 있습니까?

여기 내 "자식 지점 -a"입니다 :

choir 
* master 
remotes/old_repo/master 
remotes/new_repo/master 

업데이트 및 수정 사항 : 그것은 내 레일 응용 프로그램을 복사합니다 이전 tiny_mce을 사용하고 새로운 때마다 덮어 씁니다 tiny_mce 보석을 밝혀

나는 "rake some_task"를 실행한다. tiny_mce gem을 업그레이드했습니다.

+0

항상 작업 디렉토리를 손상시킵니다. 어쩌면 이전 참조 때문일 수도 있습니다 (git checkout 브랜치는 원격 브랜치를 체크 아웃 할 수 있습니다!). git branch -a 명령의 출력을 설명 할 수 있습니까? –

+0

@AlexandrPriymak "git branch -a"를 추가하기 위해 제 질문을 편집했습니다. 감사. –

+0

최근에 로컬 마스터 브랜치를 제거한 다음 'git checkout master'만 제거 했습니까? –

답변

1
  1. remotes/old_repo/master은 수동으로 이름을 변경 한 결과입니다. 앞으로 리모컨을 업데이트하려면 git remote rename 또는 심지어 git remote set-url을 선호합니다. 그러면 이러한 모든 종류의 것들이 정리됩니다.

    사실을 정리하면 고통이됩니다. git remote prune은 이러한 문제를 처리하기로되어 있지만 리모컨이 누락 된 경우 그렇게하지 않습니다. git branch -dr old_repo/master?

  2. git reset --hard HEAD은 (는) HEAD이 잘못된 경우 거의 수행하지 않습니다.

    git symbolic-ref HEAD으로 검사하거나 cat .git/HEAD으로 검사하거나 git branch -avv으로 실행하는 것이 더 좋습니다. 이것들은 귀하의 HEAD이 가리키는 곳을 알려줍니다.

    아마도 new_repo/master 대신 old_repo/master을 가리키고 있을까요? 그렇다면 reset --hard이 커밋되지 않은 변경에 어떤 영향을 미치는지 알고 있다고 가정하면 git reset --hard new_repo/master을 다시 말하지 않을 수 있습니다.

+0

둘 중 하나 또는 둘 다 중 하나를 선택합니까? 어쨌든, "git branch -avv"는 현재 이와 같습니다.합창단 3a57351 override tiny_mce * master 9c313f3 [ps_git/master] a.txt를 제거하십시오. remotes/codepremise/master 974b657 업그레이드 tiny_mce 리모컨/ps_git/master 9c313f3 a.txt를 제거하십시오. –