새 분기를 명시적으로 푸시해야 하는 이유는 무엇입니까?
는 처입다니에 .git
연습하고 있습니다.나는 지역 지점을 만들었지만, 내가 만들었을 때 그것을 보았습니다.git push
저장소에 분기가 업로드되지 않았습니다.저는 실제로 해야만 했습니다.git push -u origin --all
.
왜이가한? 할지점은 기본적으로 추진해야 할 새로운 변화가 아닌가요?두 번째 명령을 실행해야 하는 이유는 무엇입니까?
실제 이유는 새 레포(git init)에 분기(no)가 없기 때문입니다.master
분기가 전혀 없음, 분기가 0임)
따라서 처음으로 빈 업스트림 레포(일반적으로 비어 있음)로 푸시할 때 해당 업스트림 레포에는 동일한 이름의 분기가 없습니다.
그리고:
- 기본 푸시 정책은
matching
"(동일한 이름의 모든 분기를 삭제하고, 없으면 해당 분기를 만듭니다.), - 기본 푸시 정책은 이제
simple
"(현재 분기만 표시하고 git 1.7.11 이후 업스트림에 유사한 이름의 원격 추적 분기가 있는 경우에만 적용)
두 경우 모두 업스트림 빈 repo에 분기가 없기 때문에:
- 일치하는 명명된 분기가 아직 없습니다.
- 업스트림 분기가 전혀 없습니다(동일한 이름을 사용하거나 사용하지 않음)!추적 여부)
즉, 로컬 첫 번째 푸시에서는 다음 사항을 전혀 알지 못합니다.
- 밀어야 할 곳
- 푸시 대상(원격 추적 분기로 기록되거나 이름이 동일한 업스트림 분기를 찾을 수 없기 때문에)
따라서 적어도 다음 작업을 수행해야 합니다.
git push origin master
하지만 당신이 그렇게만 한다면, 당신은:
- 업스트림 림생다니합이 됩니다.
master
업스트림의 분기(현재 비어 있지 않은 repo): 좋습니다. - 로컬 지점에 기록하지 않습니다.
master
.origin
) 'master
branch 불량 (bad branch): (bad branch): 좋지 않습니다.
그렇기 때문에 첫 번째 푸시에서는 다음 작업을 수행하는 것이 좋습니다.
git push -u origin master
또는 Git 2.37과 새로운 글로벌 옵션을 사용합니다.
git config --global push.autoSetupRemote true
git push
그것은 기록될 것입니다.origin/master
원격 추적 분기로, 다음 번에 자동으로 밀어넣기를 활성화합니다.master
origin/master
.
git checkout master
# Git 2.23+
git switch master
git push
은 푸시 정책인 '푸시 정책입니다.current
또는 'upstream
'.
의 경우,첫 각의경우 에, 번이후에째첫각▁the.git push -u origin master
간단한 git push는 계속 밀기에 충분할 것입니다.master
오른쪽 상류 지점으로.
그렇지 않습니다. 아래를 참조하십시오.
저는 달에 로켓을 발사하려는 것이 아니기 때문에 이 '특징'이 다소 짜증난다고 생각합니다. 그냥 제 빌어먹을 나뭇가지를 밀어보세요.당신도 아마 그럴 거예요, 그렇지 않으면 여기 없을 거예요!
수정 사항은 다음과 같습니다. 분기가 오리진에 존재하는지 여부에 관계없이 현재 분기를 암시적으로 푸시하려면 이 명령을 한 번만 실행하면 아무 곳에서도 다시 실행할 필요가 없습니다.
git config --global push.default current
이렇게 가지를 만들면 다음과 같이 됩니다.
git checkout -b my-new-branch
그런 다음 커밋을 하고 다음을 수행합니다.
git push -u
(해당 분기에 있는) 오리진으로 내보내고 해당 분기가 존재하지 않는 경우 해당 분기를 생성합니다.
나중에 해당 분기에서 끌어낼 경우 -u비트가 연결되어 있는지 확인합니다.나중에 분기를 끌 계획이 없는 경우(또는 끌 계획이 있는 경우 다른 하나의 라이너도 괜찮습니다) -u는 필요하지 않습니다.
의 출력git push
새로운 지점을 추진할 때
> git checkout -b new_branch
Switched to a new branch 'new_branch'
> git push
fatal: The current branch new_branch has no upstream branch.
To push the current branch and set the remote as upstream, use
git push --set-upstream origin new_branch
간단한git push
에서는 현재 로컬 분기가 추적 중인 원격 분기가 이미 존재한다고 가정합니다.이러한 원격 분기가 존재하지 않고 이를 생성하려면 다음을 사용하여 지정해야 합니다.-u
(짧은 형태의--set-upstream
) 깃발.
왜 그럴까요?구현자들은 리모콘에 브랜치를 만드는 것이 실수로 그것을 하는 것이 어려울 정도로 중요한 작업이라고 느꼈다고 생각합니다. git push
당신이 항상 하는 일입니다.
"지점은 기본적으로 추진해야 할 새로운 변화가 아닐까요?"나는 Git의 "변화"가 약속이라고 말하고 싶습니다.분기는 커밋에 대한 포인터입니다.푸시를 다른 저장소로 커밋하는 것으로 생각하는 것이 더 합리적입니다.푸시되는 커밋은 현재 위치한 분기와 원격의 분기에 대한 해당 분기의 추적 관계에 따라 결정됩니다.
분기 추적에 대한 자세한 내용은 Pro Git 책의 Remote Branchs 장에서 확인할 수 있습니다.
저는 원래 개발자들에 의한 근거를 이렇게 빨리 찾을 수는 없었지만, Git의 몇 년간의 경험을 바탕으로 교육받은 추측을 해볼 수 있습니다.
아니요, 모든 지점이 외부로 밀고 나가고 싶은 것은 아닙니다.개인적인 실험일 수도 있습니다.
게다가, 어디서 해야 합니까?git push
모든 가지를 보내시겠습니까?Git는 여러 원격에서 작동할 수 있으며 각각 다른 분기 집합을 가질 수 있습니다. 예를 들어 중앙 프로젝트 GitHub repo에는 릴리스 분기가 있을 수 있고 GitHub 포크에는 검토를 위한 주제 분기가 있을 수 있으며 로컬 Git 서버에는 로컬 구성이 포함된 분기가 있을 수 있습니다.한다면git push
현재 분기가 추적하는 원격으로 모든 분기를 푸시할 수 있습니다. 이런 종류의 계획은 쉽게 망칠 수 있습니다.
HEAD는 현재 분기 sogit push -u origin HEAD works의 줄임말입니다.이제 별칭을 사용할 때마다 이 입력을 피하려면 다음과(와)
git config --global alias.pp 'push -u origin HEAD'
이후 git-b 브랜치를 통해 생성된 브랜치를 푸시하고 싶을 때마다 다음을 사용하여 푸시할 수 있습니다.
gitpp
이것이 누군가를 위해 시간을 절약하기를 바랍니다!
처음 확인 시
1단계:git remote -v
//git를 하거나 건너뜁니다.
2단계:git remote rm origin
다음 주소를 구성합니다. git//get//getablish는 다음과 같습니다.
3단계:git config --global user.email "youremail@example.com"
4단계:git initial
5단계:git commit -m "Initial Project"
//step-6을 건너뜁니다.
6단계:git remote add origin %repo link from bitbucket.org%
7단계:git push -u origin master
저는 방금 이 문제의 추가적인 순열을 경험했습니다.
나는 이름이 붙은 지점을 가지고 있었습니다.feat/XYZ-1234-some-description
제가 Jira 1234호를 작업하고 있었기 때문입니다.작업 중에 작은 작업을 추적하기 위해 새로운 Jira 이슈를 만들었고, 제가 푸시하러 왔을 때 다음과 같은 새로운 이슈 번호를 가진 지점 이름으로 푸시하기로 결정했습니다.
git push -u origin feat/XYZ-5678-a-different-description # failed
이로 인해 이 SO 스레드에서 논의 중인 오류가 발생했습니다.하지만 현재 지점 이름과 다른 지점 이름으로 변경하려고 했기 때문에 여기에 설명된 문제와 문제가 다릅니다.푸시하기 전에 로컬 지점의 이름을 변경했습니다.
git branch -m feat/XYZ-1234-some-description feat/XYZ-5678-a-different-description
git push -u origin feat/XYZ-5678-a-different-description # now works
주변에서 조금 더 읽은 후에 저는 제가 설정할 수 있었다는 것을 깨달았습니다.src
에서.git push
이름으로 현재지이또는그냥로름으점그냥▁either▁the▁to로HEAD
해당하는 경우:
git push -u origin feat/XYZ-1234-some-description:feat/XYZ-5678-a-different-description # also works
새 분기에서 새 변경사항을 처음 푸시할 수 있도록 설정한 경우.그리고 아래의 오류:
*git push -f
fatal: The current branch Coding_Preparation has no upstream branch.
현재 분기를 푸시하고 원격을 업스트림으로 설정하려면 다음을 사용합니다.
git push -u origin new_branch_name
** Successful Result:**
git push -u origin Coding_Preparation
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 4 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 599 bytes | 599.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote:
remote: Create a pull request for 'Coding_Preparation' on GitHub by visiting: ...
* [new branch] Coding_Preparation -> Coding_Preparation
Branch 'Coding_Preparation' set up to track remote branch 'Coding_Preparation' from 'origin'.
언급URL : https://stackoverflow.com/questions/17096311/why-do-i-need-to-explicitly-push-a-new-branch
'programing' 카테고리의 다른 글
MongoDB 집계 프레임워크에서 중위수 계산 (0) | 2023.06.26 |
---|---|
GitHub에 생성된 새 원격 분기 추적 (0) | 2023.06.26 |
Git를 사용하여 원격 분기 자동 추적 (0) | 2023.06.21 |
python에서 문자열을 변수 이름으로 변환 (0) | 2023.06.21 |
오류 'mongo.js:L112 오류: src/mongo/shell/mongo.js의 서버 127.0.0.1:27017에 연결할 수 없습니다.L112' (0) | 2023.06.21 |