Git은 현재 체크 아웃 된 마스터에서 브랜치를 생성합니까?


78

메인 브랜치가 체크 아웃되고 전체 파일 더미가 수정되고 커밋되지 않은 서버에 git 제어 폴더가 있습니다. 깨끗한 버전으로 돌아갈 수 있도록 별도의 분기에 변경 사항을 커밋 할 수있는 방법이 있습니까?

즉,이 모든 사람의 변경 사항을 효율적으로 취소하고 싶지만 다른 기회에 저장하여 해당 사람이 변경 사항을 원할 경우 해당 분기로 전환 할 수 있습니다.

(예, 이것이 git이 작동하도록 설계된 방식이 아니라는 것을 알고 있지만 그것이 제 상황입니다!) 어떤 아이디어라도 대단히 감사합니다.


1
< stackoverflow.com/questions/1394797/… > 과 유사합니다 . 그리고 헤이, git은 귀하의 경우에 매우 잘 작동합니다. 그런 워크 플로우를 위해 설계되지 않았다고 말하지 않을 것입니다. 그것은!
knittl

설명을 위해 변경 사항이 사용되지 않을 것으로 예상하지만 만일을 대비하여 영구 기록이 필요합니다.
corydoras 09.09.21

답변:


136

먼저 현재 HEAD를 기반으로 다른 분기로 이동하는 것은 다음과 같이 수행됩니다.

git checkout -b newbranch

모든 변경 사항을 커밋합니다 (새로 추가 된 파일이 없다고 가정하고 그렇지 않으면 파일 git add).

git commit -a

마스터 브랜치로 돌아갑니다.

git checkout master

이전에 커밋되지 않은 변경 사항은 모두 newbranch 분기에 있으며 마스터는 해당 변경 사항이없는 상태로 유지됩니다.


5
설명 : 작업 저장소의 내용 및 단계적 변경이 브랜치에 속하지 않습니다. HEAD (마지막 개정판)에서 새 분기를 생성하는 것만으로도 새 커밋이 방금 생성 된 분기로 이동하기에 충분합니다 <newbranch>.
Jakub Narębski

감사합니다. 새 지점으로 전환하면 변경 사항이 지워질 것이라고 생각했습니다. SVN 배경에서 왔기 때문에 이와 같은 전환이 가능하다고 생각하지 않았습니다. 지금 테스트하십시오.
corydoras

14

이 방법은 유용합니다.

git checkout -B <new_branch> <start point>

어디:

  • <new_branch>당신의 새로운 지점 (예 my_branch)
  • <start point>당신의 시작 지점입니다 ( master귀하의 경우)
  • -B에서 시작하는 새 분기를 생성 <start point>하고 이미 존재하는 경우 다음으로 재설정합니다 ( -b분기가 이미 존재하는 것처럼 실패하지 않음 ).
  • 때때로 -m분기를 전환 할 때 지정하는 데 유용 할 수 있습니다. 이것은 현재 분기, 작업 트리 내용 (스크립팅에 유용함)간에 3 방향 병합을 수행합니다.

자세한 내용 man git-checkout은 참조하십시오.


13

언제든지 변경 사항을 숨길 수 있습니다.

git stash
git checkout -b bravenewmaster
git stash apply

또한 "잘못된"브랜치에 커밋하면 브랜치가 커밋에 대한 포인터 일 뿐이므로 항상 해당 브랜치를 뒤로 이동할 수 있습니다.


3
동일한 변경 사항을 즉시 다시 적용하려면 왜 숨겨야합니까? 당신은 그냥 할 수 있습니다 git checkout -b bravenewmaster. 입력이 적고 변경된 모든 파일을 불필요하게 건드리지 않습니다.
CB Bailey

1
글쎄, 나는 시도 git하지 않았지만 어떤 이유로 든 git checkout -b변화가있을 때 허용하지 않는다고 생각했습니다 . 그렇지 않으면 왜 질문을합니까? ;-)
Michael Krelin-hacker

실제로 "이 모든 사람의 변경 사항을 효율적으로 취소하고 싶지만 다른 기회에 저장하여 해당 사람이 변경 사항을 원하면 해당 분기로 전환 할 수 있습니다."라고 말할 수있는 것은 분기 및 적용없이 숨김만으로 충분해야합니다. .
Michael Krelin-해커

1
(일시적으로 '숨김'이 아닌) 변경 사항을 저장하는 경우 실수로 삭제되지 않는 숨김보다 명명 된 분기에 커밋 (메시지 포함)을 갖는 것이 더 적절할 것입니다. 하지만 둘 다 작동합니다.
CB Bailey

1
물론 다른 사람의 의도를 완전히 이해할 수는 없지만 "이 경우에 작업하고 싶지만 지옥을 수정했습니다. 제발 회피하고 나중에 직접 처리 하시겠습니까"라는 느낌이 들었습니다
Michael Krelin-해커
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.