2014-03-25 3 views
0

git repo의 현재 상태를 저장해야합니다. 나중에 나는 주에 돌아갈 필요가있다.repo의 현재 git 상태 저장

저장된 상태는 현재 분기를 포함하고 변경해야합니다.

예 : 나는 지점 master에 오전 foo.py.을 수정 한

  1. 상태 저장
  2. 수정 : 예 : checkout 다른 분기. 상태로
  3. 반환 : 수정 foo.py

AFAIK stash 또는 지점 이름이 저장되지 도착하기 때문에, 여기에 도움이되지 않습니다 임시 지점을 마스터하고 되돌릴 전환합니다.

저장 및 복원이 스크립트에서 수행되므로 배관 명령을 사용할 수 있습니다.

+1

왜 숨기지 않을까요? – Holloway

+1

정확히 숨겨진 내용입니다. –

+0

다른 복제물을 만드시겠습니까? 그런 다음 원하는대로 복제하고 원래 복제본을 남겨 두었던 것처럼 보장 할 수 있습니다. 다른 한편으로는 작업 브랜치에 foo를 일시적으로 적용하고 다른 작업으로 전환 한 다음 다른 작업을 마치면 다시 작업 브랜치로 전환합니다. 상태를 완료하기 위해 작업을 재개하면 항상 git reset HEAD ~ 1을 재설정 할 수 있습니다. – slobobaby

답변

3
git stash 상태를 저장합니다 사용

: 그것은 당신의 인덱스의 상태를 포함, (그들은 대신 특별한 refs/stash 이름을 통해 발견하고) 어떤 지점 "에"없는 두 1 커밋을 만들고, 상태 너의 일하는 나무의. 그런 다음 git reset --hard을 사용하여 작업 트리 및 인덱스 변경 사항을 없애고 분기를 변경하는 것이 안전합니다.

stash이 저장하지 않는 상태의 한 부분은 은닉이 저장되었을 때 있었던 지점의 이름입니다 (있는 경우).

은을 저장하려면, 현재 "분리 된"입니다 git symbolic-ref HEAD을 (분기 이름을 가져 --short을 사용하고 HEAD가 기호 심판, 즉, 아닌 경우 0이 아닌 종료 참고 실행해야합니다,이 경우 당신이해야 할 수도 있습니다 현재의 커밋 ID를 어딘가에 저장하는 것, 아마도 그것을 보호하기 위해 참조에 넣는 것). 거기에 저장 할 상태입니다, 그래서 refs/stash이 존재하고 git stash save 단계 이후 새로운 다른 커밋 ID를 가리키는 있는지 확인하는 것이 현명하다면 git stash save 아무것도 할 것

참고. (스크립트에서는 그렇게하기가 어렵지 않습니다 : 새로운 커밋 ID를 얻기 위해 git rev-parse -q --verify refs/stash을 사용하고, 이전 커밋 ID를 얻기 위해 save 전에 사용하십시오. git symbolic-ref과 마찬가지로, 참조가 존재하지 않으면 0이 아닙니다.


1 또는 세 개의 커밋 당신은 git stash save -u 또는 git stash save -a 사용하는 경우. 세 번째 커밋에는 일반적으로 혼자있는 파일 인 untracked 및 무시 된 파일이 포함됩니다. 자세한 내용은 git stash documentation을 참조하십시오.

+0

감사합니다. 내 질문을 이해하고 해결책이 좋아 보인다. – guettli

관련 문제