답변:
거의 작동합니다.
기본이 아닌 분기로 푸시 할 때 소스 참조 및 대상 참조를 지정해야합니다.
git push origin branch1:branch2
또는
git push <remote> <branch with new changes>:<branch you are pushing to>
<remote>/<branch>
git push origin :branch2
현재 로컬 브랜치를 리모컨에 밀어 넣고 branch2
대신 리모컨을 삭제 하겠다고 생각하고 (나 같은) 유혹을 느끼는 사람이 있다는 것을 명심하라 branch2
! 올바른 방법은 git push origin HEAD:branch2
입니다.
확실히, 그것은 그것이 BRANCH2의 빠른 전진이거나 당신이 그것을 강요하는 경우에만 작동합니다. 그런 일을하는 올바른 구문은
git push <remote> <source branch>:<dest branch>
작동 방식에 대한 자세한 내용 은 git push 매뉴얼 페이지 의 "refspec"에 대한 설명을 참조하십시오 . 또한 강제 푸시와 재설정은 "기록을 다시 작성하는"조작이며 원격 저장소 및 기타와 관련하여 수행중인 작업을 완전히 확신하지 않는 한 희미한 마음으로 시도해서는 안됩니다. 같은 프로젝트의 포크 / 클론을 가진 사람들.
git push --force remote local-branch:remote-branch
.
매우 간단합니다. 로컬 및 원격 위치에있는 지점 A 를 변경 했지만이 변경 사항을 어디에도 존재하지 않는 지점 B 로 푸시하려고 한다고 가정하십시오 .
1 단계 : 새 지점 B 를 작성하여 전환
자식 체크 아웃 -b B
2 단계 : 새 로컬 지점에 변경 사항 추가
git add. // 또는 특정 파일
단계 03 : 변경 사항 커밋
자식 커밋 -m "commit_message"
4 단계 : 새 분기 B로 변경 사항을 푸시하십시오 . 아래 명령은 원격으로 새 분기 B 를 만듭니다.
자식 푸시 원점 B
이제 비트 버킷에서 분기 B에 분기 A 보다 하나 이상의 커밋이 있는지 확인할 수 있습니다 . 그리고 지점 A 를 체크 아웃 할 때 이러한 변경 사항은 지점 B 로 푸시되었으므로 변경 사항이 없습니다 .
참고 : 분기 A 로 변경 사항을 커밋 한 후 해당 변경 사항을 새 분기 B 로 변경하려면 해당 변경 사항을 먼저 재설정해야합니다. # 해피 러닝
내 경우에는 하나의 로컬 커밋이 origin\master
있었지만로 푸시되지 않았지만 로컬 master
브랜치에 커밋되었습니다 . 이 로컬 커밋은 이제 다른 브랜치로 푸시되어야합니다.
Git Extensions 를 사용하면 다음과 같은 작업을 수행 할 수 있습니다.
GIT 명령 줄 에서도 그렇게 할 수 있습니다 . David Christensen 에서 복사 한 예 :
나는 당신이
git cherry-pick
+git reset
훨씬 빠른 워크 플로우를 찾을 것이라고 생각합니다 ."feature"가 최상위 커밋이 잘못된 브랜치 인 동일한 시나리오를 사용하면 훨씬 쉽게 수행 할 수 있습니다.
git checkout master
git cherry-pick feature
git checkout feature
git reset --hard HEAD^
상당히 많은 작업을 저장
git cherry-pick
하고 처리하도록 설계된 시나리오입니다 .또한 이것이 최선의 커밋이 아닌 경우에도 잘 작동합니다. 다음을 통해 체리 픽에 대한 논쟁에 대한 헌신이 필요합니다.
git checkout master
git cherry-pick $sha1
git checkout feature
git rebase -i ... # whack the specific commit from the history
나는 git push origin branch1:branch2
명령 으로 나쁜 결과를 얻었습니다 .
제 경우 branch2
에는 삭제되고 branch1
새로운 변경 사항으로 업데이트되었습니다.
당신이 원하는 경우에 따라서 만 변화가 밀어 branch2
로부터 branch1
, 아래의 절차를 시도 :
branch1
:git add .
branch1
:git commit -m 'comments'
켜기 branch1
:git push origin branch1
켜기 branch2
:git pull origin branch1
켜기 branch1
: 이전 커밋으로 되돌립니다.
git init
#git remote remove origin
git remote add origin <http://...git>
echo "This is for demo" >> README.md
git add README.md
git commit -m "Initail Commit"
git checkout -b branch1
git branch --list
****add files***
git add -A
git status
git commit -m "Initial - branch1"
git push --set-upstream origin branch1
#git push origin --delete branch1
#git branch --unset-upstream
BRANCH1에 커밋했으며 변경 사항을 잃지 않고이 커밋을 제거하고 싶습니까? git reset 이 필요합니다. 하다:
git branch BRANCH2
BRANCH2를 새 브랜치로 사용하려는 경우 원하는 경우이를 다른 분기와 병합 할 수도 있습니다. BRANCH2가 이미 존재하면이 단계를 생략하십시오.
그런 다음 수행하십시오.
git reset --hard HEAD~3
커밋 한 브랜치에서 커밋을 재설정하려는 경우. 이것은 마지막 3 개의 커밋을 변경합니다.
그런 다음 재설정 된 커밋을 BRANCH2로 가져 오려면 다음을 수행하십시오.
git checkout BRANCH2
이 소스는 도움이되었습니다 : https://git-scm.com/docs/git-reset#git-reset-Undoacommitmakingitatopicbranch
branch1
및branch2
원격에있을 필요가 있습니까? 로컬branch1
에서 원격 으로 푸시 하려면origin branch2
어떻게합니까?