programing

현재 변경 사항을 사용하여 Git 분기 만들기

topblog 2023. 4. 23. 09:56
반응형

현재 변경 사항을 사용하여 Git 분기 만들기

는 일이 쉬울 것 같아서 마스터 브랜치 작업을 시작했습니다.잠시 후, 저는 더 많은 작업이 필요하다는 것을 깨달았고, 이 모든 일을 새로운 지점에서 하고 싶습니다.

어떻게 하면 마스터를 더럽히지 않고 새로운 브랜치를 만들고 이 모든 변경 사항을 가져갈 수 있을까요?

아직 확약하지 않았다면 (1: 지점)과 (3: 체크아웃)만으로 충분합니다.
또는 하나의 명령어로:

Git 2.23+(Q3 2019)에서 새로운 명령어는 브랜치를 한 줄에 만듭니다(같은 종류의 브랜치).reset --hard(따라서영향에 주의해 주세요):

# First, save your work in progress!
git stash

# Then, one command to create *and* switch to a new branch
git switch -f -c topic/wip HEAD~3

또는 Alia의 답변에서 제시된 바와 같이, 를 사용하지 않고 사용합니다. git stash:

git switch -c topic/wip -m

--merge

현재 브랜치와 전환처의 브랜치 간에 다른1개 이상의 파일을 로컬로 변경했을 경우 명령어는 컨텍스트에서 변경을 유지하기 위해 브랜치 전환을 거부합니다.

그러나 이 옵션을 사용하면 현재 분기, 작업 트리 내용 및 새 분기 간의 3방향 병합이 완료되고 새 분기로 이동합니다.

병합 충돌이 발생하면 충돌하는 경로에 대한 인덱스 항목이 병합되지 않은 상태로 유지되므로 충돌을 해결하고 해결된 경로를 다음과 같이 표시해야 합니다.git add(또는git rm패스가 삭제될지 여부를 확인합니다.


man 페이지에서 설명한 바와 같이:

$ git stash                # (0) Save your work in progress
$ 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분기하여 계속 작업합니다.

다시: 새로운 방식(2019년 Git2 이후)23) 이 모든 것을 1개의 명령어로 실행한다.

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

주의: 의 '파괴적' 효과에 의해git reset --hard명령어(인덱스 및 작업 트리를 리셋합니다).이후 작업 트리에서 추적된 파일에 대한 변경 사항<commit>폐기됨)을 선택하겠습니다.

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

이렇게 하면 인덱스에 추가되지 않은 개인 파일이 손실되지 않습니다.
--soft옵션은 인덱스 파일이나 작업 트리에 전혀 영향을 주지 않습니다(단, 헤드는 로 재설정됨).<commit>(다른 모드와 마찬가지로)


이 질문에 기재된 바와 같이:Git: 마스터에서 태그 없이 또는 커밋되지 않은 변경으로 브랜치를 만듭니다.스태시는 필요 없습니다.

사용방법:

git checkout -b feature/newbranch

커밋되지 않은 작업은 모두 새 지점으로 옮겨집니다.

밀려고 하면 다음과 같은 메시지가 나타납니다.

fatal: 현재 브런치 기능/뉴브런치에는 업스트림브런치가 없습니다.현재 분기를 푸시하고 리모트를 업스트림으로 설정하려면

git push --set-upstream origin feature/newbranch

브런치를 리모트로 작성하려면 , 다음의 순서에 따릅니다.

git push --set-upstream origin feature/newbranch

다음의 순서에 따릅니다.

  1. 새 분기를 만듭니다.

     git branch newfeature
    
  2. [Checkout new branch] : (작업은 리셋되지 않습니다.)

    git checkout newfeature
    
  3. 이제 이 새로운 브랜치에 대한 작업을 커밋합니다.

    git commit -s
    

할 수 있습니다.
리셋 --hard 라고 하는 것은, 리셋 --hard 라고 합니다.

-scommit 파라미터는 입니다.

아직 커밋을 하지 않았기 때문에 모든 변경 내용을 저장하여 새 브랜치로 만들고 전환한 다음 해당 변경 내용을 작업 트리로 다시 팝업할 수 있습니다.

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

대부분의 답변이 구식인 것을 알 수 있습니다.새로운 switch 명령어를 사용하여 stash 및 pop을 수행할 필요가 없습니다.

git switch -c new_branch -m

는 "new_filench"라는 이름의 새로운 브런치를 만들고 그 브런치로 전환하여 커밋되지 않은 모든 변경을 수정 파일로 가져옵니다.그런 다음 변경 작업을 계속하거나 새 브랜치에 변경 작업을 커밋할 수 있습니다.

새 브랜치에 새 변경을 추가하고 원격에 푸시하려면:

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

푸시에 오리진 부품을 추가하는 것을 잊어버리고 왜 새로운 브랜치/커밋이 비트버킷에 표시되지 않는지 헷갈리는 경우가 많다.

언급URL : https://stackoverflow.com/questions/3899627/create-git-branch-with-current-changes

반응형