web-dev-qa-db-de.com

git 'fatal: Zweig' master 'existiert nicht in git

mit git für eine Weile, es ist sehr mächtig und schön .. 

aber auch etwas verwirrt darüber: 

es sollte unter Branch Master, nachdem ich ein Git Repo initiieren, nicht wahr? 

aber git branch -a, ich habe nichts mann.
und ich habe fatal: branch 'master' does not exist erhalten, als ich versuche, Upstream für meinen Zweig einzurichten. 

[email protected] MINGW64 ~/Desktop/taste
$ git init
Initialized empty Git repository in C:/Users/users/Desktop/taste/.git/

[email protected] MINGW64 ~/Desktop/taste (master)
$ git remote add Origin [email protected]:greedev/Test.git

[email protected] MINGW64 ~/Desktop/taste (master)
$ git branch -u Origin/master
fatal: branch 'master' does not exist

[email protected] MINGW64 ~/Desktop/taste (master)
$ git branch -a

[email protected] MINGW64 ~/Desktop/taste (master)
$ git fetch
The authenticity of Host 'gitee.com (120.55.226.24)' can't be established.
ECDSA key fingerprint is SHA256:FQGC9Kn/eye1W8icdBgrQp+KkGYoFgbVr17bmjey0Wc.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'gitee.com,120.55.226.24' (ECDSA) to the list of know                n hosts.
remote: Counting objects: 7, done.
remote: Compressing objects: 100% (6/6), done.
remote: Total 7 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (7/7), done.
From gitee.com:greedev/Test
* [new branch]      master     -> Origin/master

[email protected] MINGW64 ~/Desktop/taste (master)
$ git branch -a
  remotes/Origin/master

[email protected] MINGW64 ~/Desktop/taste (master)
$ git branch -u Origin/master
fatal: branch 'master' does not exist

enter image description here

11
Zander Wong

TL; DR

Sie können an dieser Stelle git checkout master eingeben.

Längere Beschreibung (aber immer noch nicht so lang)

Du machst das auf die harte Tour.

In der Zukunft statt:

mkdir repo
cd repo
git init
git remote add Origin <url>
git fetch Origin
git checkout master

sie können einfach laufen:

git clone <url> repo

da die sechs Befehle oben ziemlich genau das sind, was git clone tut.

Nach den ersten drei Schritten - dem Erstellen eines neuen, völlig leeren Repositorys - haben Sie ein Repository, das sich in einem besonderen Zustand befindet: Es gibt keine Commits, also keine Verzweigungen. Zur gleichen Zeit hat hat einen aktuellen Zweig , was master ist.

Mit anderen Worten ist der aktuelle Zweig ein Zweig, der nicht existiert .

Dieser Zustand ist ungewöhnlich, aber normal. Wenn Sie git checkout --Orphan newbranch ausführen, versetzen Sie Ihr Git-Repository in denselben Status:1 auf einem Zweig, der nicht existiert. Der Zweig wird erstellt, sobald ein Commit-Hash unter dem Zweignamen gespeichert werden soll.

Immer, wenn Sie git checkout <name> ausführen und es keinen Zweig mit dem Namen <name> gibt, prüft Git, ob es genau einen Remote-Tracking-Zweig wie Origin/<name> gibt. In diesem Fall erstellt Git einen new - Zweig mit dem Namen <name>, der auf dasselbe Commit wie Origin/<name> verweist und der Origin/<name> als Upstream festgelegt ist.

Da dieser letzte Schritt, git checkout master, wenn master noch nicht wirklich vorhanden ist, der letzte Schritt von git clone ist, erstellt git clone auch einen neuen Zweig master, der den Remote-Tracking-Zweig Origin/master verfolgt.


1Beachten Sie, dass Sie den aktuellen Inhalt des Index-/Stagingbereichs beibehalten. Dies gilt auch für das neue leere Repository. Da es sich jedoch um ein neues leeres Repository handelt, ist auch der Index-/Staging-Bereich leer, und das "Beibehalten des leeren Satzes" fühlt sich nicht so an, als würde er zurückbehalten.

20
torek

Nachdem Sie git init ausgeführt haben, wird die angezeigte master nicht vollständig erstellt. Es existiert nicht, da es noch kein Commit zeigt. Ich habe einmal gelesen, dass es entworfen wurde. Aber ich denke, es ist ein rätselhafter Fehler. Wenn Sie git branch ausführen, wird nichts zurückgegeben.

Nachdem Sie git fetch ausgeführt haben, führt ein nachfolgender git checkout master den Job aus. Es ist äquivalent zu:

git branch master Origin/master
git checkout master
git branch -u Origin/master
2
ElpieKay

Sie suchen wahrscheinlich nach git checkout master und auch nach einigen Tutorials.

0
Pbd