wake-up-neo.com

Wie man Git Repository aus seiner zip klonen kann

Ich versuche, ein Remote-Repository auf Github zu klonen, aber es ist groß und meine Verbindung scheint nicht stabil genug zu sein, daher kann ich es nicht erfolgreich klonen.

Ich habe aber erfolgreich den .Zip des Repository heruntergeladen.

Gibt es eine Möglichkeit, diese Zip so zu verwenden, wie sie von git clone erstellt wurde, so dass ich Push, Pull usw. ausführen kann?

33
Lesto

Ein verwandter Beitrag hier liefert die Informationen, die erforderlich sind, um das .git-Verzeichnis zu greifen und die Antwort zu vereinfachen, die umläute bereitgestellt hat:

  • Holen Sie sich das .git-Verzeichnis, indem Sie ein leeres Repository klonen

    $ mkdir repo
    $ git clone --bare http://github/user/repo repo
    
  • Erstellen Sie das Verzeichnis .git und verschieben Sie die geklonten Dateien

    $ mkdir repo/.git
    $ mv repo/* repo/.git
    
  • Entpacken Sie das Repository

    $ unzip repo.Zip
    
  • Initialisieren Sie das Repository erneut

    $ cd repo
    $ git init
    
  • Stellen Sie sicher, dass Sie synchronisiert sind

    $ git pull
    
  • Setzen Sie den HEAD zurück, um den Status zu bereinigen

    $ git reset HEAD
    
  • Hier ist das Protokoll für das Repo ... Repo-Standort - http://github.com/udacity/fullstack-nanodegree-vm

    $ git log
    commit ebcbda650bc81d7f4856f5314a0689cea5b43086
    Merge: 574774b b5b787e
    Author: Karl Krueger <[email protected]>
    Date:   Tue Apr 7 11:39:54 2015 -0700`
    
            Merge pull request #3 from pmallory/sharedDirAlert
    
            Add a login alert to explain how to access Vagrant's shared directory
    
    commit b5b787efdb1ecec0c3c9c7f9c0fd4732f984fcb3
    Author: Philip Mallory <[email protected]>
    Date:   Mon Apr 6 15:40:32 2015 -0700`
    
           move the alert into the motd
    
    commit b8012f33c86b0d19fc4c2b972af092e88d00978f
    Author: Philip Mallory <[email protected]>
    Date:   Mon Apr 6 14:32:01 2015 -0700`
    
           Add a login alert to explain how to access Vagrant's shared directory
    
    commit 574774ba29ccd661154431d5600240f090440c37
    Author: Lorenzo Brown <[email protected]>
    Date:   Wed Mar 11 14:08:02 2015 -0700`
    
           Update pg_config.sh
    
           Added installs for Auth&Auth
    
    commit 88fc5537b1a0017a1d76af4587a22412473809a4
    Author: Lorenzo Brown <[email protected]>
    Date:   Wed Mar 4 13:00:25 2015 -0800`
    
           Update and rename vagrant to vagrant/catalog/README.txt
    
    commit f978cdc14c62b7295d8da1a95452faaa1bd108b8
    Author: Lorenzo Brown <[email protected]>
    Date:   Wed Feb 4 11:06:03 2015 -0800`
    
           Update Vagrantfile
    
           switched to port forwarding on 8080
    
    commit d6a3a26578ef3c6d01d28abca76d817938892c7f
    Author: Lorenzo Brown <[email protected]>
    Date:   Tue Feb 3 14:52:34 2015 -0800`
    
           Update Vagrantfile
    
           Added:
    
           config.vm.network "forwarded_port", guest: 80, Host: 8080
           config.vm.network "forwarded_port", guest: 5000, Host: 5000
    
           FSF uses these two ports for lessons 2 & 3 respectively.
    
    commit 752a79e408c7328ef7f1766d1b97bb468ffed90a
    Author: Mike Wales <[email protected]>
    Date:   Mon Feb 2 11:21:29 2015 -0800`
    
           Removed .vagrant directory
    
    commit 5af9d19adf9ab19b1d886f6cc78e556f864b42dd
    Author: Mike Wales <[email protected]>
    Date:   Mon Feb 2 11:16:45 2015 -0800`
    
           Initial commit.
    
23
fracjackmac

Wenn Sie das Repository heruntergeladen haben (einschließlich des .git-Verzeichnisses), ist das ganz einfach.

  • entpacken Sie das Repository

    $ unzip repo.Zip
    
  • konfigurieren Sie eine remote in Ihrem Repository, die auf den Klon-URI verweist

    $ cd repo
    $ git init
    $ git remote add Origin https://github.com/user/repo.git
    
  • synchronisieren Sie die Repositorys erneut

    $ git pull
    

In der Praxis scheint es, dass der "Zip" -Download von github nicht das .git-Verzeichnis enthält, so dass dies nicht hilft :-(

Die beste Wette, die Sie haben, ist wahrscheinlich, einen Klon auf einem Computer zu erstellen, der über einen stabilen Zugriff verfügt, und dann das .git-Verzeichnis zu komprimieren und das Verzeichnis irgendwie abzurufen ....

11
umläute

Während die akzeptierte Antwort den Trick tut, scheint dies etwas geradliniger.

unzip <repo>.Zip
cd <repo>
git init
git add .
git remote add Origin https://github.com/<user>/<repo>.git
git remote update
git checkout master

Stellen Sie sicher, dass Sie <user> & <repo> durch Ihren github-Benutzernamen und Ihren Repo-Namen ersetzen.

5
arctelix

Die einzige Zip-ähnliche Alternative zum Klonen ist das Austauschen von "Bundles" , aber ich befürchte, dass github keine Erstellung/Download von Bundles anbietet.

Ein von github herunterladbares Zip-Archiv ist nur eine Momentaufnahme eines bestimmten Commits Ihres Repository-Verlaufs (normalerweise die Spitze eines Zweigs), und es enthält keinen Verlauf. Diese Funktion soll die Benutzer Ihrer Codebasis automatisch bereitstellen ( Nicht Entwickler!) mit einer Möglichkeit, eine Momentaufnahme des Quellcodes des Projekts bequem herunterzuladen. Beachten Sie, dass bloße Benutzer und beispielsweise nachgelagerte Betreuer, die Ihre Software für Betriebssysteme verpacken, normalerweise keine kompletten Historien klonen, sondern eher mit Tarballs arbeiten.

Mit anderen Worten: Das Herunterladen eines Zip-Archivs funktioniert wie das Ausführen von git archive auf der Remote-Seite und das Weitergeben der resultierenden Datei.

Beachten Sie auch, dass auf github (und anderen Git-Hosting-Providern) gehostete Repositorys "bloß" sind, dh das Unterverzeichnis ".git" nicht enthalten.

In jedem Fall scheint Ihre einzige Möglichkeit, dieses Problem zu lösen, die Suche nach einem schnellen und zuverlässigen Link und dem ersten Download.

Beachten Sie jedoch, dass Dinge sich ändern, wenn Sie damit einverstanden sind, nicht die vollständige Historie zu haben. Sie können dann das sogenannte "shallow cloning" verwenden, indem Sie den Befehlszeilenparameter "--depth" an git clone übergeben.

1
kostix

Je nach Anwendungsfall ist die Initialisierung möglicherweise nicht der richtige Weg. Es ist besonders langwierig, wenn es ein sehr großes Repository gibt (meine waren 16 GB und Ineeded, um dies zu tun), und in der Tat wird lokaler refs+objects weggeblasen, was nicht gut ist, wenn Ihr Archiv ein Archiv darstellt, für das keine Fernbedienung mehr existiert.

Das Repository muss in zwei Schritten kopiert werden:

  1. "Datendateien" (HEAD-Revision möglicherweise nicht gespeichert)
  2. Indizes und Objekte dh. history + refs + objects: Hier werden Ihre Basislinien, Deltas, Zweigzeiger und Tags aufgezeichnet.

Ziel ist es, zu reduzieren, wie viele Objekte von einer entfernten Station geklont werden müssen oder welche nicht von einer nicht mehr existierenden entfernten Umgebung erstellt werden können . Darüber hinaus möchten Sie, dass Ihre Konfiguration keinen Konflikt mit den lokalen Konfigurationsdateien desjenigen verursacht, der das Repository ursprünglich erstellt hat  

Sie möchten das Repository-Layout für Objekte und Referenzen beibehalten, die in der Remote-Umgebung nicht mehr vorhanden sind oder die Sie nicht kopieren möchten (z. B. große Bildressourcen). Aus diesem Grund möchten Sie nicht initiieren und ziehen, besonders wenn Sie keine Fernbedienung mehr haben.

Stattdessen befindet sich das Repository bereits in einem akzeptablen Zustand mit intakten Referenzen und Objekten. Das einzige Problem kann sein, wenn die Fernbedienungen nicht mehr richtig eingerichtet sind und Ihre Konfiguration möglicherweise nicht richtig eingestellt ist.

Führen Sie git config --local -l aus, um sicherzustellen, dass die Festschreibungsidentität nicht lokal im Repository festgelegt ist, und ändern Sie alle Schlüssel, die Ihre globalen Einstellungen auf eine Weise überschreiben, die Sie nicht möchten.

Nun, da es so konfiguriert ist, dass das Repository jetzt wie Ihr eigenes behandelt wird (weil es so ist), ist git so konzipiert, dass es verteilt funktioniert. Sobald Sie eine lokale Konfiguration geändert haben, ist es praktisch nicht anders, als wäre es geklont worden. Jetzt müssen Sie nur noch sicherstellen, dass Ihre Fernbedienungen richtig eingestellt sind.

Wenn Sie kein Remote haben, aber einen erstellen möchten, erstellen Sie ihn mit git init --bare auf dem Remote-Server. Fügen Sie dann wie gewohnt einen Remote hinzu und drücken Sie alle Refs git Push --all. Wenn ein Repository leer gemacht wird, bedeutet dies, dass es den ersten Push akzeptiert, ohne sich über eine unterschiedliche Geschichte zu beklagen.

Wenn Sie über ein Remote-Repository verfügen, fügen Sie es als Remote hinzu und ziehen Sie es ab. Die Archivzweige verweisen möglicherweise auf die falsche URL, je nachdem, wie lange das Archiv erstellt wurde. Wenn dies der Fall ist, verwenden Sie git remote, um sie neuen Standorten zuzuweisen, oder tote URLs entfernen.

Sobald die Fernbedienungen eingerichtet wurden, rufen Sie mit und holen Sie, um auf den neuesten Stand zu kommen. Wenn es einen getrennten KOPF gibt, checken Sie den gewünschten Zweig aus. Wenn der Verlauf des archivierten Repositorys vom Remote abweicht, führt git zu einem Zusammenführungskonflikt. Er wird wie üblich aufgelöst, und Änderungen werden ggf. gespeichert.

0
awiebe