얼마 전 한 곳에 있는 일부 파일의 재설정하지 afaq 아웃하라는 커밋합니다 스태이징, 이후 '나' 의 값으로 리베이스 - 최근 현지 커밋한 몇 있었다. # 39 m, t, 내가 지금 상태로 I& don& # 39 꽤 이해합니다.
깃 (git), '로그' 가 내 작업 영역을 정확히 어떤 i& # 39; d # 39, 오른쪽에 있는 내가 didn& 커밋한 트레이닝하려면 i& 작성되지는 - # 39 m, t want gone, 새로운 수준들과 좁히어, etc.
하지만 방금 밀어넣기되었습니다 what& # 39 의 원격 리포지토리를, 그리고 다른 몇 가지 있습니다 - # 39 는 I& 커밋한 사망한 리베이스 attaboy 끼워졌는지, 새, d, t # 39 수준들과 커밋됨 로칼에서 aren& 할 수 있다.
내 생각엔 " master/origin"; 분리되어 있지만, 그게 무슨 뜻인지 100% # 39 m not 헤드에게 I& 대한 명확한 방법을 통한 it 시각화합니다 명령줄이 도구, and how to fix it.
첫째, let 's 구체화합니다 어떤 헤드가 때, 어떤 무슨뜻이냐믄 분리되었는지.
현재 헤드입니다 는 기호식 이름을 체크아웃된 커밋합니다. 때 아닌 헤드에게 분리되었는지 (,, "보통" < sup> 1< /sup>. 상황: you have a 분기로의 체크아웃된), 실제로 헤드에게 점을) 의 "ref" 과 분기로의 시점을 커밋합니다. 따라서 헤드에게 "direct-attached '을 주장한다. 새로운 것을 만들 때는 로칼에서 지점을 가리키는 헤드에게 업데이트되도록 가리키십시오 새로운 커밋합니다. 이후 그냥 자동으로 헤드입니다 inet6.0 지사급 가리킵니다.
깃 (git) '참조' 마스터 '*' 기호식 참조 헤드에게 익올때 앞면이야 / / "Master") 라는 지점에 체크아웃됩니다.
우리는 '헤드' '참조' 마스터 '' 17a02998078923f2d62811326d130de991d1a95a 앞면이야 / /
이 때 직접, 간접적으로 포인팅 헤드가 분리되었는지 대신 커밋합니다 지사급 통해 한 점. 이름 없는 분기로의 분리되었는지 헤드입니다 部门是这样的 협력하였습니다 생각할 수 있습니다.
우리는 '헤드' '17a02998078923f2d62811326d130de991d1a95a'
중요한 것은 이 점을 기억해야 할 수 있는 경우 분리되었는지 헤드에게 커밋합니다 비참조 (ref 도달할 수 없는 다른 it) 한 후, 그렇지 않으면 됩니다 "허상" when you 체크 아웃 일부 다른 커밋합니다. 결국 이러한 과정을 통해 허상 커밋한 적립율은 축소됨 가비지 컬렉션 (기본적으로 이러한 보관됩니다 적어도 2 주 정도 더 오래 보관할 수 있으며 기술입니까 의해 참조됨 헤드입니다 의 세로그).
< sup> 1< /sup>;;; "보통" 작업을 해야 하는 것은 정말 괜찮아요 분리되었는지 헤드입니다, 방금 추적할 수 있는 방법도 피쉬는 떨어트림 역사 세로그 빼냅니다 뭐한테 틀렸다니까 않아도 됩니다.
중간 단계를 통해 이루어집니다 상호대화식 리베이스 분리되었는지 헤드 (active) 의 부분 오염 방지 세로그). 이를 통해 기존 분기로의 작업을 마칠 경우 전체 리베이스 업데이트하십시오 누적 결과 헤드에게 리베이스 작업 및 재설치 를 원래 주장한다. 내 생각엔 리베이스 프로세스, 결코 완전히 완료된 것입니다 이렇게 하면 분리되었는지 남겨두십시오 있는 것을 가리키는 헤드에게 커밋합니다 가장 최근에 의해 처리된 리베이스 운영할 수 있다.
현재 상황에서 복구할 수 있도록 만들어야 합니다 현재 abc. 커밋합니다 지사급 가리키는 데 따라 분리되었는지 머리:
git branch temp
git checkout temp
sub> <; (줄여서 '임시' 깃 (git) 이 두 명령의세 체크아웃합니다 수 있습니다 - b) < /sub>;
이렇게 하면 머리 다시 연결하고 새로운 '임시' 주장한다.
그 다음, 현재 커밋합니다 비교해야 합니다 (역사와) 를 설치할 것으로 일반 분기로의 작업:
git log --graph --decorate --pretty=oneline --abbrev-commit master origin/master temp
git diff master temp
git diff origin/master temp
(Rec.601 시험해 보려고 할 로그 옵션: 추가 'p' 남겨두십시오 오프하도록 예쁜. '=' 전체를 볼 수 로그 메시지, etc.)
잘 어울려 분기로의 경우 임시 '새', '마스터' 가리키십시오 업데이트하려면 수 없다. (예:)
git branch -f master temp
git checkout master
sub> <; (줄여서 '임시' 이 두 명령의세 체크아웃합니다 수 있습니다 - B 마스터에는 깃 (git) < /sub>;
그런 다음 임시 삭제하시겠습니까 지사급:
git branch -d temp
마지막으로 다시 밉니다 보려고 할 수 있다.
git push origin master
이 명령의 종료 '를 추가해야 할 수 있습니다' 힘 푸시할 원격 지점 "빠른 전달" 새로운 커밋합니다 수 없는 경우 (즉 너회가 떨어트림 또는 일부 기존 로칼에서 또는 그 밖의 일부 비트를 사랑하는 사랑하는 역사).
아마 리베이스 조교하실 경우 중간에 작업을 정리할 수 있습니다. 서버인지에 리베이스 롬폭 프로세스를 확인할 수 있습니다 '보고 디렉토리에는 .git/rebase-merge/'. 그 디렉터리를 삭제할 수 있습니다 클린업합니다 리베이스 수동으로로 진행 중 단 (예를 들어, 더 이상 목적과 컨텍스트로 너희에게베풀어진 경우 활성 리베이스 운영). 일반적으로 사용하는 것과, 그렇다고 '-' git 리베이스 중단할 것을 피하기 위해 몇 가지 추가 재설정됨 좋습니다 (이동하는 헤드입니다 다시 원래 지사 및 재설정됩니다 it 다시 원래 커밋합니다 명령취소, 이를 일부 작동합니까 하나님이 참조).
내가 이 문제를 분할합니다 실행했음 보라 내가 읽어들입니다 상단형 투표한 대답:
>. 현재 헤드입니다 는 기호식 이름을 체크아웃된 커밋합니다.
생각해봤죠: 아 하! 만약 '헤드' 는 것을 '마스터' 커렌레티 기호식 이름을 체크아웃합니다 로칼에서 것을 '마스터' 가 리베이스 조정을 할 수 있어요.
git rebase HEAD master
이 명령:
체크 아웃 '마스터' 1. 2 의 '헤드' 점 '헤드' 갈라져서 커밋한 식별됩니다 상위입니다 백됩니다 '마스터' 에서 3. 재생할지 커밋한 그 위에 '마스터'
그 결과 '헤드' 가 아닌 '마스터' 이 있었던 그게 단가요 커밋한 어졌다면 또한 '마스터'. '마스터' 체크아웃된 있다.
이와 관련해 원격:
>. # 39 의 I& 몇 커밋한 사망한 리베이스 attaboy 끼워졌는지, 새, d, t # 39 수준들과 커밋됨 로칼에서 aren& 할 수 있다.
더 이상 빠른 전달 할 수 있는 원격 기록 사용하여 로컬 기록. # 39, ll you& 할 인력용 누름식 ('git push - f') 를 덮어씁니다 원격 기록. 일반적으로 있으면 누구나 이해할 수 있도록 좌표계나 친일파 통해 이 같은 페이지에서.
그 후에는 누름식 '마스터' 를 '/' 마스터 '가 너회의 원격입니다 자간은 분기로의 원격' 그 '마스터' 같은 커밋합니다 업데이트되어야 가리키십시오 있다.
여기서 기본적인 설명도 분리되었는지 머리:
http://git-scm.com/docs/git-checkout
명령행을 시각화할 수 있다.
git branch
또는
git branch -a
아래와 같은 출력을 얻을 수 있습니다.
* (no branch)
master
branch1
이 '* (no 지점)' 가 있습니다 분리되었는지 헤드입니다.
이 상태로 따라오렴 외상때문에 수행여 체크아웃합니다 섬코미트 깃 (git) 등이 'a' 는 다음 너희에게 했을 것 "이라고 말했다.
>. # 39, & # 39 HEAD& 분리되었는지 있습니다. 상태. 너 >. 둘러보거라, 실험 할 수 있습니다. >. 그들을 변경사항과 커밋합니다 수 있다는 것입니다. >. 이 모든 커밋한 무시하시겠습니까 할 수 있습니다 >. 어떤 영향을 주지 않고 분기로서의 스테이드 >. 다른 수행하여 체크아웃합니다. >. >. 스케쳐내 드라이버로의 새로 만들 수 있습니다 >. 만든 커밋한 유지 할 수 있습니다. >. 그래서 (현재 또는 그 이상) 를 사용하여 - b >. 체크아웃합니다 명령을 다시. 예: >. >. git new_branch_name 체크아웃합니다 - b
깃 (git) '또는' 로그 '와' 하는 것만으로도 세로그 git 기록해두십시오 커밋한. 깃 (git) '와' 지금 '마스터' 이 git 병합해야 체크아웃합니다 커밋한.
git merge HEAD@{1}
편집:
I '아니라' 깃 (git) 을 사용하여 리베이스 추가, 삭제 / 서있느라 커밋한 don& 합니다 물론 저들이요 편집을 위해 # 39 필요한 건 아니다. 그냥 " 언급하십시오 edit"; 할 수 있습니다 다음 목록 및 있는 커밋합니다 너회의 커밋합니다 실행하십시오 깃 (git) - 계속 '을' 리베이스 쉬-잇. 이 것은 결코 있을 수 있는 보장 에서 분리되었는지 헤드입니다.
그냥 좀 있으면 다시 " 정의마스터 지사 및 develop"; 그냥 이렇게 피쳐나.
git checkout origin/develop
참고: 출처 체크아웃하기 / 개발 .
그럼
git checkout -b develop
작동하잖아:)
현재 분리되었는지 확인표시를 푸시할 헤드입니다 (확인 '로그' 전에 깃 (git), 종료기:
git push origin HEAD:master
보내려면 분리되었는지 헤드입니다 salesforce. 마스터에는 분기로의 dell. 있다. 그 경우, '마스터' 가 처음으로 내려받습니다 당기십시오 누름식 거역했으니하나님은 시도하시겠습니까 깃 (git) 의 변화 "라고 주장하고 있다. 이 경우, t care about don& # 39 의 변화 때문에 일부 출처 및 it& # 39 의 거절됨 교체할 수 있는 그 / 마스터에는 재발했지 의도적 리베이스 및 현재 분리되었는지 분기로의 ('-f') - 그럼 강제로 밀어 수 있습니다. 일부 경우에, 넌 언제나 대평님은 액세스하려면 커밋한 실행하십시오 세로그 '이전' 깃 (git) 에서 모든 기록을 볼 수 있다.
마스터의 분기로의 복귀할 수 있는 유지하면서 변경, 종료기 명령은 다음과 같습니다.
git rebase HEAD master
git checkout master
그냥, 오늘 이 문제를 해결할 수행여 정보기술 (it) 에 실행했음 키워봤지 예쁜 확신한다.
git branch temp
git checkout master
git merge temp
내가 어렸을 때 내가 이 방법에 대한 내 업종에문제가 컴퓨터, 이제 깨달았습니다 I& # 39 m 로, 실행 같은 문제가 on my personal computer. 그래서 기다려야 인도되니 I& # 39 일 때, 내가 얼마나 정확하게 알 수 m 다시 작동합니까 컴퓨터 그것을했다.
이 질문에 '& # 39 에서 검색할 때 내가 찾은 틀렸다니까 HEAD& 분리되었는지 # 39;; 스테이드. '
내가 행한 분석해 여기까지 비교할 때, 내가 실수를 저지를 과거 내가 갖고 있는 것을 발견했다.
내 정상적인 흐름이:
git checkout master
git fetch
git checkout my-cool-branch
git pull
This time I did.
git checkout master
git fetch
git checkout origin/my-cool-branch
# You are in 'detached HEAD' state.
문제는 내가 실수로 did:
git checkout origin/my-cool-branch
대신:
git checkout my-cool-branch
수정 (내 상황이) 는 간단히 위의 명령을 실행해야 다음 계속 흐름.
git checkout my-cool-branch
git pull
다음 협력했습니다 가져다줄래요 (사용할 때만 분기로의 마스터):
git push origin HEAD:master
git checkout master
git pull
첫 번째 푸시합니다 분리된 헤드에게 원격입니다 수 있다.
두 번째 시도는 분기로의 사숙님!
세 번째는 복구되는지 되는 머리를 첨부됩니다 분기로의 사숙님!
문제가 발생할 경우 지정값이 http://support. 첫 번째 명령은 누름식 거절됨 된다. 하지만 이렇게 하면 문제가 될 것이 아니라 사실에 대해서는 더 이상 되는 헤드에게 분리되었는지 헤드에게 일부 원격 변경으로부터 알고 있지 않습니다.
내가 가진 것으로, 다음과 같은 상황에 의해 abc. 크리스씨가
깃 (git) '' 헤드 '실패하고 기호식 참조 치명적: ref 헤드에게 기호식 참조 '아닙니다.
그러나 '마스터' 는 rev 구문 분석 git / / 내가 할 수 있는 좋은 참조 앞면이야 가리키는 커밋합니다 복구하십시오 (내 경우에는 마지막 커밋합니다 [사] '표시' 깃 (git) 을 사용하여 증대하고자 하는 것을 볼 수 있습니다
I did 많이유 고정적일까요 그냥, 그 후, 그렇다면 셨으며 과도한 것으로 보인다
깃 (git) '마스터' / / 앞면이야 기호식 참조 헤드입니다 참조
및 head 는 re direct-attached!
All you & # 39, & # 39 체크아웃합니다 할 일은 깃 (git) [분기로의 이름]. 여기서 [분기로의 이름] 를, 원래 이름은 분기로의 잡을라는데 붙여넣습니다 분리되었는지 헤드입니다 상태. (분리되었는지 충스러웠으니 세드패스데프) 이 사라지게 된다.
'git checkout asdfasd14314'
이제 받을시간은 분리되었는지 헤드입니다 스테이드
* (detached from asdfasdf)
dev
prod
stage
그러나 이 분리되었는지 나가버렷 헤드입니다 스테이드 뒤로를 개발자에게 > -;
'git checkout dev'
* dev
prod
stage
그러나 이는 설치하지 않을 경우 어떤 변화가 있는 것은 물론 내가 내 자신을 찾을 수 없는 상태로 분사한 헤드에게 이렇게 많이유 전통을 파괴하려 변경한 이전 커밋합니다 보도록 한 것이 아니라
오늘 이 문제를 갖고 있지만, 어디서, 어떤 인도하심이라만일 업데이트되도록 서브모두리 wasn& # 39 는 t 를 주장한다. 난 이미 커밋됨 도왔으매 보관 한, 체크 아웃, 운스타싱 wouldn& # 39, 빗나갔다. 체리 따기 됐지 내가 이 분리되었는지 head& # 39 의 커밋합니다. 그래서 난 직후 커밋됨 (누름식 실패했습니다. 때), I did.
git checkout master
git cherry-pick 99fe23ab
내 생각을 했다. # 39 의 i&, m 에 있는, 하지만 난 로렌아줌마가 분리되었는지 헤드에게 사숙님! 만약 내가 내 에서 사찰안에 가정 내 분리되었는지 스테이드 크게 다르지 않다; d # 39 를 적용할 수 있다고 커밋합니다 사찰안에 I& 설정됩니다. 이것이 정확히 어떤 체리 선택 높여줍니까.
git checkout -B master HEAD
특히, 이 역시 내가 찾은 이 경우 발생할 수 있는 유용한 서브노드 리포지토리를 분리되었는지 스테이드 대답하도다 경우가 많았다.
저는 이동하여 다음 단계를 통해 이 같은 문제를 해결할 수 있었습니다.
'Df' 로 모든 비 추적 파일 시스템에서 분기로의 절감뿐만 실행하십시오 청소하십시오 - 깃 (git).
그럼 내의 모든 언스티지드 선택해제합니다 변경되는지 리포지토리를 합니다. 깃 (git) 을 수행하기 위해서는 실행하십시오 체크아웃합니다 할 '-'
마지막으로 다시 깃 (git) 을 사용하여 체크아웃합니다 정의마스터 분기로의 지사급 모세야 네 합니다 '마스터' 함장님이요
개인적으로 내 자신을 찾을 때 상황에서 제가 없는 동안 약간의 변화가 나타났다 "며" 나는 '마스터' (즉, '헤드' 는 없고 '마스터' 커밋한 분리되었는지 오른쪽 위에 있는 사이) 보관 한 도움이 됩니다.
git stash # HEAD has same content as master, but we are still not in master
git checkout master # switch to master, okay because no changes and master
git stash apply # apply changes we had between HEAD and master in the first place
간단히 하고, 분리되었는지 헤드입니다 스테이드 고말은 you are not 체크아웃된 사장 (또는 팁) 모든 분기로의 .
대부분의 경우가 커밋한 e0100042.log 다음과 같은 여러 가지
1:* 커밋합니다 master-> branch_HEAD (123be6a76168aca712aea16076e971c23835f8ca).
2:* 커밋합니다 master-> branch_HEAD (100644a76168aca712aea16076e971c23835f8ca) 123be6a76168aca712aea16076e971c23835f8ca->;
위에서 알 수 있듯이 이런 일련의 커밋한 너회의 분기로의 방향점 데이터베이스에구성원을 최신값 커밋합니다. 따라서 이 경우 당신이 약간만이라도 123be6a76168aca712aea16076e971c23835f8ca 커밋하려면 체크아웃합니다 경우 그 이후 수 있는 상태를 가리키는 분기로의 헤드에게 분리되었는지 헤드에게 체크아웃됩니다 dell. 헤드에게 지사급 없는 제품으로, 100644a76168aca712aea16076e971c23835f8ca 있습니다. 따라서 틀렸다니까 분리되었는지 헤드에게 있는 상태.
이 블로그 의 확실히요 it& # 39 라는 깃 (git) 은 각각 한 리포지토리를 나무 커밋한 커밋합니다 때마다 포인터를 가리키는 포인터를 커밋합니다 업데이트되도록 조상, 이들 각 분기로의 하위 디렉터리 .git/refs 저장됩니다. 태그는 저장됩니까 .git/refs/tags 및 분기로서의 .git/refs/heads. 저장된다. 모든 파일의 경우, 각 태그에 # 39 쳐다보거라 you& 찾을 수 있는 모든 파일 하나만 대응됩니다.) 과 40 자 해시라고 커밋합니다 위에서 설명한 @chris 욘센 및 @yaroslav 니키타옌코 통해 확인할 수 있습니다 다음 아웃해야 참조입니다.