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

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

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

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



답변

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

git checkout -b newbranch

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

git commit -a

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

git checkout master

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


답변

이 방법은 유용합니다.

git checkout -B <new_branch> <start point>

어디:

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

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


답변

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

git stash
git checkout -b bravenewmaster
git stash apply

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


답변