Ich habe das:

git clone --depth=1 <repo> app
cd app
git fetch origin
git checkout a119b1076dd45a88a3609c4f7893ef3d82f9a4ee

Aber es heißt:

fatal: reference is not a tree: a119b1076dd45a88a3609c4f7893ef3d82f9a4ee

Wenn ich den Namen der Filiale verwende:

 git checkout me/work

Ich bekomme:

error: pathspec 'me/work' did not match any file(s) known to git.

Liegt es daran, dass ich einen flachen Klon gemacht habe? macht für mich nicht viel Sinn. Das Commit befindet sich auf der Fernbedienung, zumindest befindet sich der Zweig / das Commit mit diesem Namen auf der Fernbedienung.

Aktualisieren:

Also habe ich git fetch --all ein --all hinzugefügt und dann git branch -vv --all ausgeführt und ich sehe:

* master                4761f83 [origin/master] timeline event update date should not be the review date.  Every time it is inserted or updated the update date should be the current utc date
  remotes/origin/HEAD   -> origin/master
  remotes/origin/master 4761f83 timeline event update date should not be the review date.  Every time it is inserted or updated the update date should be the current utc date

Der Zweig befindet sich also nicht in der -Liste, wenn dies jemandem hilft, mir zu helfen.

-1
Alexander Mills 17 Mai 2019 im 01:39

4 Antworten

Beste Antwort

Wie die Dokumentation für --depth sagt,

Impliziert --single-branch, sofern nicht --no-single-branch angegeben ist

Also wenn du willst

die Geschichten in der Nähe der Spitzen aller Zweige zu holen

Geben Sie --no-single-branch auf Ihren Klon oder holen Sie sich zur einmaligen Korrektur den Abruf selbst.

git fetch --depth=1 origin +refs/heads/*:refs/remotes/origin/*

Oder um das Einzweig-Setup rückwirkend abzuschalten

git config remote.origin.fetch +refs/heads/*:refs/remotes/origin/*

Und dann git fetch.

3
jthill 16 Mai 2019 im 23:16

Ein flacher Klon ist ebenfalls von Standard , ein Einzelzweig -Klon:

- Tiefe
Erstellen Sie einen flachen Klon mit einem Verlauf, der auf die angegebene Anzahl von Commits abgeschnitten ist. Impliziert --single-branch, es sei denn ...

Ein Einzelzweig -Klon ist genau das, was er sagt: Ein Klon, der nur einen Zweig vom Upstream kopiert. (Der zugrunde liegende Mechanismus erfolgt über die Standardreferenzspezifikationen fetch, sodass Sie diese vorübergehend für einen Abruf überschreiben können, indem Sie Referenzspezifikationen angeben.)

Wenn ein flacher Klon mehr als einen Zweig kopieren soll, müssen Sie ihn in einen Klon ohne einen Zweig konvertieren oder als Klon ohne einen Zweig starten. Lesen Sie den Rest des zitierten Satzes weiter, um als einer zu beginnen. Informationen zum Ändern eines vorhandenen Klons mit einem Zweig in einen Klon mit zwei, drei oder allen Zweigen finden Sie unter Wie kann ich ein - rückgängig machen? Einzelzweigklon?

3
torek 16 Mai 2019 im 23:20

Wenn Sie einen flachen Klon erstellen, möchten Sie möglicherweise einen Zweig angeben, den Sie abrufen möchten:

git clone --depth=1 --branch=me/work <repo> app
2
Willem Defoe 16 Mai 2019 im 22:48

Ich denke, dass dies funktioniert, wenn Sie einen flachen Klon erstellen

git fetch origin me/work
git checkout -b temp FETCH_HEAD
0
Alexander Mills 16 Mai 2019 im 22:53