풀 후 새 분기로 커밋된(밀리지 않은) 변경 이동
주인'보다 '는 것을 꽤 해봤는데, '원산지/주인'이 '원산지/주인'보다 '원산지/주인'이 더. 이 작업은 실제로 자신의 지점으로 옮겨져야 했습니다.master하며, 러러커커 and and and to to to to to to to to to to에 origin 다른 이 '하다'로 이 좀 origin/master그리고 난 그 변화들을 끌어냈지
37개의 로컬 커밋을 새로운 브랜치로 소급하여 이동하려면 어떻게 해야 합니까?를 보면, 「 」라고 하는 것은, 「 」git rebase --onto my-new-branch master ★★★★★★★★★★★★★★★★★」...origin/master'다음에'는 다음과 같이 됩니다.이치노 man git-rebase 、 says a to to to to 、 to 、 says says says says says says says 。rebase그 예에서는 그렇지 않기 때문에, 이 에러의 해결 방법을 알 수 없습니다.
(이 질문들은 로컬에서 커밋된 변경이 아닌 로컬 워킹 트리에서 커밋되지 않은 기존 작업을 Git의 새로운 브랜치로 이동하거나 커밋되지 않은 변경을 다른 Git 브랜치로 병합하는 방법을 복제한 것이 아닙니다.)
이 없기 쓸 수 .origin/master... 저,를하겠습니다.처음부터 실행하겠습니다git fetch origin 하다origin/master지금 출연하고 요.master을 사용하다
git rebase origin/master
에됩니다.에 포함되지 않은 모든 커밋이 재생됩니다.origin/masterorigin/master. 커밋 rebase가 )을 git pull되었을 겁니다)라고 하면,.각 커밋에 의해 도입된 패치를origin/master(일부 경합은 도중에 해결해야 할 경우가 있습니다.그런 다음 결과에 따라 새 분기를 만들 수 있습니다.
git branch new-work
...을 리셋합니다.master으로 origin/master:
# Use with care - make sure "git status" is clean and you're still on master:
git reset --hard origin/master
때, 브런치를 조작할 때git branch,git reset를 자주 gitk --all또는 유사한 도구를 사용하여 다른 모든 참조가 가리키는 위치를 이해했는지 확인합니다.
에 있느냐에 .git branch new-work-including-merges를 리셋합니다.master에는 ,의 되어 있기 때문에origin/master아직 변경을 추진하지 않으셨다면, 이력을 보다 깔끔하게 하기 위해 기본 설정을 변경해 보시기 바랍니다.(또, 토픽 브랜치를 마스터로 다시 통합하면 변경은 더욱 명확해집니다.)
커밋 수가 적고, 이러한 커밋을 1개의 메가 커밋으로 조합해도 상관없다면, 이것은 효과가 좋고, 하는 것만큼 무섭지 않다.git rebase:
파일 분할 해제(1을 커밋 수로 대체)
git reset --soft HEAD~1
지점을 신설하다
git checkout -b NewBranchName
변경을 추가하다
git add -A
약속하다
git commit -m "Whatever"
나는 같은 문제를 고수했다.나는 내가 공유하고 싶은 가장 쉬운 해결책을 찾았다.
1) 변경사항으로 새로운 브런치를 만듭니다.
git checkout -b mybranch
2) (옵션) 리모트서버에 새로운 브랜치코드를 푸시 합니다.
git push origin mybranch
3) 마스터 브랜치로 다시 체크아웃합니다.
git checkout master
4) 리모트 서버에서 마스터 브랜치 코드를 리셋하여 로컬 커밋을 삭제합니다.
git reset --hard origin/master
branch1이 branch이고 branch2가 committed changes가 branch2라고 가정하는 또 하나의 방법이 있습니다.
git fetch && git checkout branch1
git log
이동해야 하는 커밋 ID
git fetch && git checkout branch2
git cherry-pick commit_id_first..commit_id_last
git push
이제 첫 번째 분기에서 푸시되지 않은 커밋을 되돌리기
git fetch && git checkout branch1
git reset --soft HEAD~1
또는 잘못된 브런치를 커밋한 직후에, 다음의 순서를 실행합니다.
git loggit diff {previous to last commit} {latest commit} > your_changes.patchgit reset --hard origin/{your current branch}git checkout -b {new branch}git apply your_changes.patch
나는 1단계와 2단계에 대해 더 간단한 접근법이 있다고 상상할 수 있다.
그럼 어떻게 되는 거죠?
- 현재 HEAD에서 분기합니다.
- 새 지점이 아닌 마스터에 있는지 확인하십시오.
git reset변경을 시작하기 전의 마지막 커밋으로 돌아갑니다.git pull을 사용하다
아니면 나뭇가지에 재병합하려고 하면 터질까?
다음은 훨씬 더 간단한 방법입니다.
새 분기를 만듭니다.
에서는, 「」를 실행합니다.
git merge master(푸시되지 않은) 새 - ( ) pushed ) 。[ branch ] 。
git branch -D master-D-d분기를 강제로 삭제하려고 합니다.ㅇㅇㅇㅇㅇ로 요.
git fetchgit pull마스터 브런치에 접속하여 팀의 최신 코드를 확인합니다.
보다 심플한 어프로치를 사용하고 있습니다(커밋을 4개 이동한다고 가정합니다).
git format-patch HEAD~4
(4 의 해 주세요.patch 삭제)
git reset HEAD~4 --hard
git checkout -b tmp/my-new-branch
그 후, 다음과 같이 입력합니다.
git apply /path/to/patch.patch
당신이 원하는 순서대로.
원본의 새로운 복사본 확인
git clone ........원하는 위치에서 분기 만들기
git checkout {position}git checkout -b {branch-name}원격 저장소 추가
git remote add shared ../{original sources location}.git원격 소스 가져오기
git fetch shared원하는 지점 체크아웃
git checkout {branch-name}소스 병합
git merge shared/{original branch from shared repository}
나에겐 이것이 최선의 방법이었다.
- conflicts (변경 및 머지 충돌 확인)
git fetch - 분기를 만듭니다.
git branch my-changes. - 에서 새로 된 브랜치로
git master -u upstream-branch remotes/origin/my-changes - 새로운 업스트림브런치에 커밋을 푸시합니다.
-
git branch master --set-upstream-to remotes/origin/master
언급URL : https://stackoverflow.com/questions/5066041/moving-committed-but-not-pushed-changes-to-a-new-branch-after-pull
'programing' 카테고리의 다른 글
| Apple Push Notification 설정에 사용되는 .pem 파일 생성 (0) | 2023.04.20 |
|---|---|
| 오래된 커밋에서 새로운 Git 브랜치를 작성하려면 어떻게 해야 하나요? (0) | 2023.04.20 |
| 함수에서 여러 값을 swift로 반환합니다. (0) | 2023.04.20 |
| Azure Cosmos DB가 멀티 모델이라는 것은 어떤 의미입니까? (0) | 2023.04.20 |
| bash 스크립트의 에코 탭 문자 (0) | 2023.04.20 |