Abrufen einer bestimmten Übergabe aus einem entfernten Git-Repository

Gibt es eine Möglichkeit, nur eine bestimmte Übergabe aus einem entfernten Git Repository abzurufen, ohne es auf meinem PC zu klonen? Die Struktur der Remote-Repository ist absolut die gleiche wie die von mir und daher gibt es keine Konflikte, aber ich habe keine Ahnung, wie dies zu tun, und ich don & #39; t wollen, dass riesige Repository klonen.

Ich bin neu in Git, gibt es eine Möglichkeit?

Sie klonen nur einmal, d.h. wenn Sie bereits einen Klon des entfernten Repositorys haben, wird durch das Ziehen von diesem nicht alles erneut heruntergeladen. Geben Sie einfach an, welchen Zweig Sie ziehen wollen, oder holen Sie die Änderungen und checken Sie den gewünschten Commit aus.

Das Holen aus einem neuen Repository ist sehr günstig in der Bandbreite, da es nur die Änderungen herunterlädt, die Sie nicht haben. Denken Sie daran, dass Git das Richtige macht, mit minimaler Belastung.

Git speichert alles im .git Ordner. Ein Commit kann nicht isoliert abgerufen und gespeichert werden, er braucht alle seine Vorgänger. Sie sind zusammenhängend.


Um die Download-Größe zu reduzieren, können Sie Git jedoch bitten, nur Objekte zu holen, die mit einem bestimmten Zweig oder einer bestimmten Übertragung zusammenhängen:

git fetch origin refs/heads/branch:refs/remotes/origin/branch

Dies wird nur Commits herunterladen, die im entfernten Zweig branch (und nur die, die Sie vermissen) enthalten sind, und sie in origin/branch speichern. Sie können dann zusammenführen oder auschecken.

Sie können auch nur einen SHA1-Commit angeben:

git fetch origin 96de5297df870:refs/remotes/origin/foo-commit

Dies lädt nur den SHA-1-Commit 96de5297df870 (und seine Vorgänger, die Sie vermissen) herunter und speichert ihn als (nicht existierenden) Remote-Zweig origin/foo-commit.

Kommentare (9)

Ich habe einen Pull auf mein Git Repo gemacht:

git pull --rebase  

Damit konnte Git den gesamten Code für den Zweig einziehen, und dann habe ich den Commit zurückgesetzt, der mich interessierte.

git reset --hard

Hoffentlich hilft das.

Kommentare (3)

Sie können einfach einen einzelnen Commit eines entfernten Repos holen mit

git fetch  

wo,

  • `kann ein entfernter Repo-Name sein (z.B.origin) oder sogar eine entfernte Repo-URL (z.B.https://git.foo.com/myrepo.git`)
  • `` kann die SHA1-Übertragung sein

zum Beispiel

git fetch https://git.foo.com/myrepo.git 0a071603d87e0b89738599c160583a19a6d95545

nachdem Sie den Commit (und die fehlenden Vorfahren) geholt haben, können Sie ihn einfach mit

git checkout FETCH_HEAD

Beachten Sie, dass dies Sie in den "detached head" Zustand bringt.

Kommentare (9)