현재 변경 사항이있는 Git 브랜치 작성 시작했습니다 . 잠시 후 더 많은 작업이

나는 나의 일이 쉬울 것이라고 생각하면서 마스터 지점 에서 일하기 시작했습니다 . 잠시 후 더 많은 작업이 필요하다는 것을 깨달았고이 모든 작업을 새로운 지점에서 수행하고 싶습니다.

새로운 브랜치를 만들고 더티 마스터 없이 어떻게 모든 변경 사항을 가져갈 수 있습니까?



답변

아직 커밋하지 않은 경우 (1 : 분기) 및 (3 : 체크 아웃)만으로 충분합니다.
또는 하나의 명령으로 :git checkout -b newBranch

git reset매뉴얼 페이지 에서 언급했듯이 :

$ git branch topic/wip     # (1)
$ git reset --hard HEAD~3  # (2)  NOTE: use $git reset --soft HEAD~3 (explanation below)
$ git checkout topic/wip   # (3)
  1. 커밋을했지만 ” master“브랜치 에있는 것은 너무 이른 것입니다 . 토픽 브랜치에서 계속 연마하고 싶기 때문에 ” topic/wip“브랜치에서 현재 브랜치를 생성 하십시오 HEAD.
  2. master세 가지 커밋을 제거하기 위해 분기를 되감습니다 .
  3. topic/wip“분기로 전환 하고 계속 작동하십시오.

참고 : git reset --hard명령 의 “파괴적”효과로 인해 (인덱스 및 작업 트리가 재설정됩니다. 작업 트리에서 추적 된 파일의 변경 사항 <commit>은 삭제됩니다) 오히려 다음과 같이 진행합니다.

$ git reset --soft HEAD~3  # (2)

이렇게하면 개인 파일 (인덱스에 추가되지 않음)이 손실되지 않습니다.
--soft옵션은 인덱스 파일이나 작업 트리에 전혀 영향을 미치지 않습니다 (그러나 <commit>모든 모드와 마찬가지로 헤드를으로 재설정 ).


함께 힘내 2.23+새로운 명령을git switch (같은 종류의 하나 개의 라인에서 분기를 만들 것 reset --hard때문에 그 효과 조심) :

git switch -f -c topic/wip HEAD~3

답변

이 질문에서 언급했듯이 : 힘내 : 마스터에서 태그가 지정되지 않은 / 커밋되지 않은 변경 사항으로 분기를 만듭니다 . 숨김은 필요하지 않습니다.

그냥 사용하십시오 :

git checkout -b topic/newbranch

커밋되지 않은 작업은 새 지점으로 이동합니다.

당신이 밀어하려고하면 다음 메시지가 나타납니다

치명적 : 현재 분기 기능 / NEWBRANCH에 업스트림 분기가 없습니다. 현재 분기를 누르고 리모콘을 업스트림으로 설정하려면

git push --set-upstream origin feature/feature/NEWBRANCH

원격으로 분기를 작성하도록 제안 된대로 수행하십시오.

git push --set-upstream origin feature/feature/NEWBRANCH


답변

이 단계를 따르세요:

  1. 새 지점을 만듭니다.

    git branch newfeature
    
  2. 새 지점 체크 아웃 : (이는 작업을 재설정하지 않습니다.)

    git checkout newfeature
    
  3. 이제이 새로운 브랜치에서 작업하십시오.

    git commit -s
    

위의 단계를 사용하면 원래 분기를 깨끗하게 유지하고 ‘git reset –hard’를 수행하지 않아도됩니다.


답변

커밋을 아직 수행하지 않았으므로 모든 변경 사항을 숨김에 저장하고 새 분기로 만들고 전환 한 다음 해당 변경 사항을 작업 트리에 다시 넣을 수 있습니다.

git stash  # save local modifications to new stash
git checkout -b topic/newbranch
git stash pop  # apply stash and remove it from the stash list

답변

새 브랜치에 새로운 변경 사항을 추가하고 원격으로 푸시하려면 :

git branch branch/name
git checkout branch/name
git push origin branch/name

종종 비트 버킷에 새로운 브랜치 / 커밋이 보이지 않는 이유는 무엇입니까?