Git: 마스터에서 스테이징되지 않은/커밋되지 않은 변경으로 브랜치를 만듭니다.
콘텍스트:간단한 기능을 추가하는 마스터 작업을 하고 있습니다.몇 분 후, 저는 그것이 그렇게 간단하지 않다는 것을 깨달았고, 새로운 지사로 일하는 것이 더 나았어야 했다는 것을 깨달았습니다.
항상 있는 일입니다만, 다른 브랜치로 전환해, 이 모든 커밋되지 않은 변경을 마스터 브랜치를 클린 상태로 해 두는 방법을 알 수 없습니다.내가 생각하기에git stash && git stash branch new_branch
간단히 달성할 수 있을 것 같지만, 제가 알 수 있는 것은,
~/test $ git status
# On branch master
nothing to commit (working directory clean)
~/test $ echo "hello!" > testing
~/test $ git status
# On branch master
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: testing
#
no changes added to commit (use "git add" and/or "git commit -a")
~/test $ git stash
Saved working directory and index state WIP on master: 4402b8c testing
HEAD is now at 4402b8c testing
~/test $ git status
# On branch master
nothing to commit (working directory clean)
~/test $ git stash branch new_branch
Switched to a new branch 'new_branch'
# On branch new_branch
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: testing
#
no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/stash@{0} (db1b9a3391a82d86c9fdd26dab095ba9b820e35b)
~/test $ git s
# On branch new_branch
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: testing
#
no changes added to commit (use "git add" and/or "git commit -a")
~/test $ git checkout master
M testing
Switched to branch 'master'
~/test $ git status
# On branch master
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: testing
#
no changes added to commit (use "git add" and/or "git commit -a")
당신은 이 일을 해낼 방법이 있는지 알고 있나요?
보관할 필요가 없습니다.
업데이트 2020 / Git 2.23
2 Git 2.23을 합니다.switch
커맨드는, 「」의 , 「」를 참조해 주세요.checkout
(「 」, 「 」, 「HEAD」)
Git 부터 Git을 합니다.git checkout
하다
git switch -c <new-branch>
동작은 변경되지 않습니다.
업데이트 2020 이전 / Git 2.23
git checkout -b new_branch_name
는 로컬 변경에 영향을 주지 않습니다.현재 HEAD에서 브랜치를 생성하여 HEAD를 설정합니다.그게 네가 원하는 거구나
--- 편집하여 체크아웃 마스터의 결과를 설명합니다 ---
헷갈리세요?checkout master
경경 내용 ?기 기? ???
변경은 로컬에 한정되어 있기 때문에 git에서는 쉽게 잃어버리는 것을 원하지 않습니다.브랜치를 변경해도 git은 로컬 변경을 덮어쓰지 않습니다.의 그결의 checkout master
말합니다
M testing
GIT는 파일을 는 않았습니다.의 변경이 됩니다.master
.
변경을 정말로 는, 「을 강제적으로 「체크 아웃」으로 할 가 있습니다.-f
.
git checkout master -f
당신의 변경은 커밋되지 않았기 때문에, 당신은 그것을 잃게 됩니다.
지점으로 돌아가서 변경을 커밋한 후 마스터를 다시 체크 아웃합니다.
git checkout new_branch
git commit -a -m"edited"
git checkout master
git status
해서 꼭 돼요.M
체크 후, 그 후 , 더 , 더 이상 메시지, 메시지, 메시지, 메시지, 메시지, 메시지, 메시지, 메시지, 메시지, 메시지, 메시지, 메시지, 메시지, 메시지, 메시지, 메시지, 메시지, 메시지, 메시지, 메시지, 메시지, 메시지 및 메시지,checkout master
, , , , 입니다.git status
변경된 파일은 표시되지 않습니다.
--- 작업 디렉토리(로컬파일)에 대한 혼란을 해소하기 위해 편집합니다.
첫번번 、 멘 well well well well well well 、 역, well well well well well well well well well... 음,아, 아, 아, 아, 아, 아, 아, 아, 아, 아.Git은 자동으로 저장되지 않으므로 나중에 저장하도록 전달해야 합니다.변경 후 명시적으로 커밋하거나 저장하지 않으면 git은 버전을 만들지 않습니다.HEAD)를 (checkout master
로컬 변경은 저장되지 않았기 때문에 덮어쓰지 않습니다.
시험:
git stash
git checkout -b new-branch
git stash apply
다음 두 가지 작업을 수행할 수 있습니다.
git checkout -b sillyname
git commit -am "silly message"
git checkout -
또는
git stash -u
git branch sillyname stash@{0}
(git checkout -
<--대시는 이전 브랜치 단축키입니다.)
(git stash -u
<--그-u
에는, 단계적인 변경도 필요하게 됩니다).
현재 분기의 현재 커밋되지 않은 변경을 새 분기로 이동하려면 다음 명령을 사용하여 새 분기를 만들고 커밋되지 않은 변경을 자동으로 복사합니다.
git checkout -b branch_name
현재 브랜치(마스터라고 가정)에서 새 브랜치를 만들고 커밋되지 않은 변경을 복사하여 새 브랜치로 전환합니다.
스테이징에 파일을 추가하고 변경을 새로운 브랜치에 커밋합니다.
git add .
git commit -m "First commit"
새로운 브런치가 작성되기 때문에 리모트에 푸시하기 전에 업스트림을 설정해야 합니다.업스트림을 설정하고 리모트로 푸시하려면 다음 명령을 사용합니다.
git push --set-upstream origin feature/feature/NEWBRANCH
이 명령을 누르면 원격에 새 분기가 생성되고 새 로컬 분기가 원격으로 푸시됩니다.
마스터 브랜치에서 커밋되지 않은 변경을 폐기하려면 다음 명령을 사용합니다.
git checkout master -f
그러면 체크아웃 시 커밋되지 않은 로컬 변경 내용이 모두 폐기됩니다.
만약 당신이 GitHub Windows 클라이언트(나처럼)를 사용하고 있고 새로운 브랜치로 이동하고 싶은 커밋되지 않은 변경을 하고 있다면 GitHub 클라이언트를 통해 간단히 "Crate a new branch"를 할 수 있습니다.새로 생성된 분기로 전환되어 변경 내용이 유지됩니다.
최신 Windows용 GitHub 클라이언트에서 커밋되지 않은 변경이 있는 경우 새 브랜치를 만들도록 선택합니다.
이 경우, 다음의 시나리오에 어떻게 대처할지를 묻습니다.
브랜치만 바꿔도 마찬가지입니다.
언급URL : https://stackoverflow.com/questions/2569459/git-create-a-branch-from-unstaged-uncommitted-changes-on-master
'IT' 카테고리의 다른 글
Windows에서 PATH에 Python 추가 (0) | 2023.04.18 |
---|---|
MS Excel이 PC에 존재하는지 프로그래밍 방식으로 확인하는 방법 (0) | 2023.04.13 |
Excel에서 VBA 어레이에 고유한 값 입력 (0) | 2023.04.13 |
셸의 한 줄에 여러 명령어 실행 (0) | 2023.04.13 |
MVVM에서 모델의 역할 (0) | 2023.04.13 |