2010-01-07 4 views
3

긴 이야기 짧은 *, 내가 어떻게 해야할지 모르겠다는 내 자식 저장소와 함께 몇 가지 일을 끝내고 내 머리를 분리, 즉, 커밋하면 master isn ' 최신.새로운 커밋이 머리에 없다

어떻게 해결할 수 있습니까? 병합해야합니까? (그래서, 정확한 명령은 어떤 경우 내가 실행하려면?) 나는 자식 분기를 실행하면

, 그것은 나에게 말한다 내가 어떤 지점에 현재 해요

$ git branch 
* (no branch) 
    master 
  • 긴 이야기는 내가 노력이다 어떤 커밋을 취소하고 어떻게해야하는지 전혀 몰랐습니다. 너무 길지 않았던 것 같아요.

답변

2

예를 들어, 거기는 (아무 지점)에 끝낼 수있는 몇 가지 방법이 있지만, 본질적으로는 정크 가지 물건을 검사에 사용 오래된 커밋. 실수로 파일을 편집 한 경우 (브랜치 없음), 변경된 다른 브랜치에서와 마찬가지로 마스터로 다시 전환 할 수 있습니다. git-checkout에 대한 도움말을 확인하십시오. 그러나 git-checkout -m과 같은 작업을 수행하여 마스터로 돌아가서 현재 색인을 병합하려고합니다. 당신은 또한 임시 분기를 사용하여 피할 수

git branch temp 
git checkout master 
git merge temp 
git branch -d temp 

을 :

+0

커밋 할 수 없을 것이라고 생각하지 않습니다 (분기 없음).하지만 커밋되지 않은 변경 사항에 대해 걱정할 필요가 없으면 밀어 넣을 수 있어야합니다. 마스터로 돌아가서 빨리 감기 또는 병합합니다. –

+0

@Rob 당신이 가지가 없을 때 당신은 커밋 할 수 있습니다; 당신이 그렇게하는 것을 막을 수있는 방법은 없습니다. fast-forward 될 수없는 브랜치는 push 할 수없고,'git checkout -m'은 브랜치가 없을 때 만든 커밋을 병합하지 않을 것이다; 작업 사본이나 색인에있는 변경 사항 만 병합합니다. 이 지시 사항을 따르는 경우 작성한 커밋을 잃을 수 있습니다 (그래도 여전히 reflog에 남아있을 것입니다). –

+0

@Brian 당신이 정확합니다. 처음에 나는 그가 방금 색인을 가지고 있고 master로 다시 전환하고 싶다고 가정하고 있었다. 상황에 대한 설명을 얻은 후에 나는 당신의 대답을 훨씬 좋아합니다. 명명 된 브랜치로 (브랜치 없음) 돌린 다음 정상적으로 병합하십시오. –

0

어쩌면 작업중인 지점으로 돌아 가야 할 수도 있습니다. 이 마스터 인 경우가 될 것이다

$ git checkout master 
+0

그리고 그 이후로 내가 저지른 커밋은 어떨까요?나는 즉시 깨닫지 못했습니다. –

5

가장 쉬운 (안전한) 방법은 삭제 한 후, 머리, 체크 아웃 마스터를 가리키는 임시 지점을 생성하는 임시 가지를 병합하고, 것입니다 그냥 어떤 지점에서 커밋을 얻기 위해 reflog를 사용

여기
git checkout master 
git merge [email protected]{1} 

[email protected]{1} 당신이 체크 아웃 한 것을 커밋 이전을 의미한다; [email protected]{0}은 작업중인 현재 커밋 인 HEAD과 동일합니다. 이전의 모든 (아직 만료되지 않았 음) HEAD이 가리키는 것을 커밋보고 싶다면, 당신은 할 수 있습니다 :

git reflog 

당신은 당신이 커밋을 취소하려고했기 때문에 이런 일이 있다고 말했다. mletterle이 지적한대로 git reset을 사용하면됩니다. git reset --hard rev은 현재있는 지점, HEAD, 색인 및 작업 사본을 특정 개정판으로 설정합니다. 이렇게하면 커밋되지 않은 변경 사항이 삭제되므로 실제로 수행중인 작업 만 알면 수행하십시오. 더 안전하게하려면 일반적으로 작업 복사본에 영향을주지 않는 git reset rev을 수행 한 다음 작업 복사본의 개별 파일을 git checkout으로 선택적으로 되 돌리면 수행중인 작업을 실수로 파괴하지 않습니다.

또한 일반적으로 git reset은 처리되지 않은 커밋에만 사용해야합니다. 이미 푸시 된 항목을 실행 취소하고 다른 사용자가 이미 병합 한 경우 일반적으로 git revert이 필요합니다.

관련 문제