이 맨 저장소로 푸시할 수 없는 이유는 무엇입니까?
이 워크플로우의 문제점을 설명해 주시겠습니까?
$ git init --bare bare
Initialized empty Git repository in /work/fun/git_experiments/bare/
$ git clone bare alice
Cloning into alice...
done.
warning: You appear to have cloned an empty repository.
$ cd alice/
$ touch a
$ git add a
$ git commit -m "Added a"
[master (root-commit) 70d52d4] Added a
0 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 a
$ git push
No refs in common and none specified; doing nothing.
Perhaps you should specify a branch such as 'master'.
fatal: The remote end hung up unexpectedly
error: failed to push some refs to '/work/fun/git_experiments/bare'
Doesn't.git push복제한 저장소에 항상 푸시하시겠습니까?
네, 문제는 "베어"에 커밋이 없다는 것입니다.이것은 순서(베어, 앨리스)로 리포지토리를 만드는 경우 첫 번째 커밋에서만 발생하는 문제입니다.시도:
git push --set-upstream origin master
이 작업은 처음에만 필요합니다.이후에는 정상적으로 작동해야 합니다.
Chris Johnsen이 지적했듯이, push.default가 사용자 지정된 경우에는 이 문제가 발생하지 않습니다.저는 업스트림/트래킹을 좋아합니다.
다음과 같은 경우:
git push origin master
그것은 맨 레포까지 밀어붙일 것입니다.
앨리스 레포가 제대로 추적하지 않는 것 같습니다.
cat .git/config
기본 원격 및 분기가 표시됩니다.
네가 만약
git push -u origin master
원격 및 지점 추적을 시작해야 합니다.저는 그 옵션이 항상 유효한지 확신할 수 없습니다.
이와 관련된 질문의 답은 나에게 해결책을 제공했습니다...그것은 그저 멍청한 실수였습니다.
먼저 약속하는 것을 기억하세요!
https://stackoverflow.com/a/7572252
아직 로컬 레포에 커밋하지 않았다면 푸시할 것이 없지만, 반환되는 Git 오류 메시지는 그다지 도움이 되지 않습니다.
git push --all
모든 것을 새 기본 저장소로 푸시하는 표준 방법입니다.
동일한 작업을 수행하는 또 다른 방법은 베어가 아닌 새 리포지토리를 만든 다음 이를 사용하여 베어 클론을 만드는 것입니다.
git clone --bare
그 다음에 사용
git remote add origin <new-remote-repo>
원본(비공유) 저장소에 있습니다.
이것을 사용해 보십시오.alice리포지토리(밀기 전):
git config push.default tracking
또는 사용자의 기본값으로 구성합니다.git config --global ….
git push기본값은 다음과 같습니다.origin리포지토리(일반적으로 현재 리포지토리를 복제한 리포지토리)는 현재 분기를 밀어넣지만 기본적으로 원본 리포지토리와 대상 리포지토리 모두에 있는 분기만 밀어넣습니다.
그push.default구성 변수(git-config(1) 참조)는 다음을 제어합니다.git push"refspec" 인수(즉, 리포지토리 이름 뒤에 있는 인수)가 지정되지 않으면 푸시됩니다.기본값은 위에서 설명한 동작을 제공합니다.
다음은 가능한 값입니다.push.default:
nothing
이렇게 하면 "refspec"을 제공해야 합니다.matching(기본값)
이렇게 하면 원본 리포지토리와 대상 리포지토리 모두에 있는 모든 분기가 푸시됩니다.
이것은 현재 체크아웃된 분기와 완전히 독립적입니다.upstream또는tracking
(두 값 모두 동일한 의미입니다.후자는 "원격 추적" 분기와의 혼동을 피하기 위해 더 이상 사용되지 않습니다.는 1 1을 .
이렇게 하면 현재 분기가 "업스트림" 구성으로 지정된 분기로 푸시됩니다.current
이렇게 하면 현재 분기가 대상 리포지토리의 동일한 이름의 분기로 푸시됩니다.이 마지막 두 가지는 일반적인 경우(예: 오리진/마스터를 업스트림으로 사용하는 로컬 마스터 작업)에는 동일하지만 로컬 분기가 "업스트림" 분기와 이름이 다를 경우에는 다릅니다.
git checkout master # hack, commit, hack, commit # bug report comes in, we want a fix on master without the above commits git checkout -b quickfix origin/master # "upstream" is master on origin # fix, commit git push와 함께
push.defaultupstream(또는)tracking), 푸시는 다음으로 이동합니다.origin의 마스터 브랜치.다음과 같을 때current에게 압력이 가해질 것입니다.origin의 빠른 수정 분기.
그matching하면 설이업트니다됩이데가 됩니다.bare일단 설정되면 시나리오의 마스터입니다.그것을 확립하기 위해, 당신은git push origin master한번만.
하만지그, 그.upstream 아마도 또아설마도정는▁settingcurrent더잘도 있을 것 , 은 그것을해 보는 것이 것입니다.
# try it once (in Git 1.7.2 and later)
git -c push.default=upstream push
# configure it for only this repository
git config push.default upstream
# configure it for all repositories that do not override it themselves
git config --global push.default upstream
말하지만, 1, (시말하만지다여경이, 1.7.4.2 를전버전사중,tracking에 upstream).
SourceTree git 클라이언트를 사용하는데 초기 commit/push 명령어는 다음과 같습니다.
git -c diff.mnemonicprefix=false -c core.quotepath=false push -v --tags --set-upstream origin master:master
언급URL : https://stackoverflow.com/questions/6157730/why-cant-i-push-to-this-bare-repository
'programing' 카테고리의 다른 글
| 개체에 속성이 있는지 확인하려면 어떻게 해야 합니까? (0) | 2023.05.18 |
|---|---|
| 계속하기 전에 셸 스크립트를 잠시 일시 중지하려면 어떻게 해야 합니까? (0) | 2023.05.18 |
| 작은 Azure 저장 블롭 용기(각각 몇 개의 블롭이 있는 용기)가 많은 것이 좋습니까, 아니면 정말 큰 블롭 용기가 많은 것이 좋습니까? (0) | 2023.05.18 |
| Angular에 JavaScript 스크립트 파일을 포함하고 해당 스크립트에서 함수를 호출하려면 어떻게 해야 합니까? (0) | 2023.05.18 |
| xcode 4 프로젝트 및 실제 폴더 이름 변경 (0) | 2023.05.18 |