Wie klonen Sie ein Git-Repository in einen bestimmten Ordner?
-
19-08-2019 - |
Frage
Ausführen des Befehls git clone git@github.com:whatever
erstellt in meinem aktuellen Ordner ein Verzeichnis mit dem Namen „Wie auch immer“ und legt den Inhalt des Git-Repositorys in diesem Ordner ab:
/httpdocs/whatever/public
Mein Problem besteht darin, dass ich den Inhalt des Git-Repositorys in mein aktuelles Verzeichnis klonen muss, damit er am richtigen Speicherort für den Webserver angezeigt wird:
/httpdocs/public
Ich weiß, wie ich die Dateien verschieben kann, nachdem ich das Repository geklont habe, aber das scheint Git kaputt zu machen, und ich möchte die Aktualisierung einfach per Aufruf durchführen können git pull
.Wie kann ich das machen?
Lösung
Option A:
git clone git@github.com:whatever folder-name
Ergo, für right here
Verwendung:
git clone git@github.com:whatever .
Option B:
Bewegen Sie den .git
Ordner auch. Beachten Sie, dass die .git
Ordner in den meisten grafischen Datei Entdecker verborgen ist, so sicher sein, versteckte Dateien anzuzeigen.
mv /where/it/is/right/now/* /where/I/want/it/
mv /where/it/is/right/now/.* /where/I/want/it/
Die erste Zeile packt alle normalen Dateien, greift die zweite Zeile Dot-Dateien. Es ist auch possibe es in einer Zeile zu tun, indem dotglob ermöglichen (das heißt shopt -s dotglob
), aber das ist wahrscheinlich eine schlechte Lösung, wenn Sie die Frage dieser Antwort Antworten fragen.
Noch besser wäre es:
Halten Sie Ihre Arbeitskopie woanders, und erstellen Sie einen symbolischen Link. Wie folgt aus:
ln -s /where/it/is/right/now /the/path/I/want/to/use
Für Sie Sollte dies wäre so etwas wie:
ln -sfn /opt/projectA/prod/public /httpdocs/public
, die leicht geändert werden könnte, um zu testen, wenn man es will, das heißt:.
ln -sfn /opt/projectA/test/public /httpdocs/public
ohne Dateien um zu bewegen. Hinzugefügt -fn
falls jemand kopiert diese Zeilen (-f
Kraft ist, -n
einige häufig unerwünschte Wechselwirkungen vermeiden mit bereits und nicht vorhandenen Links).
Wenn Sie wollen, dass es nur arbeiten, verwenden Sie Option A, wenn jemand anderes geht zu schauen, was Sie getan haben, verwenden Sie Option C.
Andere Tipps
Das Beispiel denke ich, eine Menge Leute diese Frage ist nach dieser ist. Wenn Sie in das Verzeichnis möchten Sie den Inhalt der git-Repository deponiert, laufen:
git clone git@github.com:whatever .
Die "" am Ende gibt die aktuellen Ordner als die Kasse Ordner.
Gehen Sie in den Ordner .. Wenn der Ordner leer ist, dann:
git clone git@github.com:whatever .
sonst
git init
git remote add origin PATH/TO/REPO
git fetch
git checkout -t origin/master
Grund Git Repository Cloning
Sie klonen ein Repository mit
git clone [url]
Zum Beispiel, wenn Sie die Stanford University Drupal öffnen Framework-Git Bibliothek namens open_framework klonen möchten, können Sie dies wie folgt tun:
$ git clone git://github.com/SU-SWS/open_framework.git
Das erstellt ein Verzeichnis namens open_framework (an Ihrem aktuellen Speicherort im Dateisystem lokal), initialisiert ein .git Verzeichnis im Inneren, nach unten zieht alle Daten für das Repository und prüft eine Arbeitskopie der neuesten Version aus. Wenn Sie das neu erstellte Verzeichnis open_framework gehen, werden Sie die Projektdateien in dort sehen, bereit, auf oder verwendet gearbeitet werden.
Klonen eines Repository in einem bestimmten lokalen Ordner
Wenn Sie das Repository in ein Verzeichnis mit dem Namen etwas anderes als open_framework klonen möchten, können Sie das als der nächste Befehlszeilenoption angeben:
$ git clone git:github.com/SU-SWS/open_framework.git mynewtheme
Dieser Befehl tut dasselbe wie die vorherigen, aber das Zielverzeichnis wird MyNewTheme genannt.
Git hat eine Reihe von verschiedenen Übertragungsprotokolle Sie verwenden können. Das obige Beispiel verwendet die git: // Protokoll, aber Sie können auch sehen, http (s): // oder user @ server:. /Path.git, die das SSH-Transfer-Protokoll verwendet
Wenn Sie die Dateien verschieben, wo Sie sie wollen, bewegen Sie auch die .git
Verzeichnis? Je nach Betriebssystem und Konfiguration, kann dieses Verzeichnis ausgeblendet werden.
Es enthält den Repo- und die unterstützenden Dateien, während die Projektdateien, die nur in Ihrem /public
Verzeichnis sind die Versionen in der zur Zeit beim Check-out sind commit (Master Zweig Standard).
Klon:
git clone git@jittre.unfuddle.com:jittre/name.git
Klonen Sie den "spezifischen Zweig":
git clone -b [branch-name] git@jittre.unfuddle.com:jittre/name.git
Um Git Repository in einen bestimmten Ordner zu klonen, können Sie -C <path>
-Parameter verwenden, z.
git -C /httpdocs clone git@github.com:whatever
Obwohl es wird noch einen whatever
Ordner auf es schaffen, so den Inhalt des Repository in aktuelles Verzeichnis zu klonen, verwenden Sie die folgende Syntax:
git git@github.com:whatever .
Beachten Sie, dass in ein bestehendes Verzeichnis Klonen ist nur erlaubt, wenn das Verzeichnis leer .
Da Sie in den Ordner klonen, die für die Öffentlichkeit zugänglich sind, sollten Sie Ihren Git-Repository von Ihrem Arbeits Baum Trennung von --separate-git-dir=<git dir>
mit oder .git
Ordnern in Ihrer Web-Server-Konfiguration (zum Beispiel in .htaccess
Datei) auszuschließen.
Wenn Sie in den aktuellen Ordner klonen möchten, sollten Sie versuchen, diese:
git clone https://github.com/example/example.git ./
So klonen Present Working Directory :
git clone https://github.com/link.git
So klonen Ein weiteres Verzeichnis :
git clone https://github.com/link.git ./Folder1/ Folder2
Hoffe, es hilft:)
Stellen Sie sicher, dass Sie das .git Repository entfernen, wenn Sie etwas versuchen, aus in das aktuelle Verzeichnis zu überprüfen.
rm -rf .git
dann git clone https://github.com/symfony/symfony-sandbox.git
Verwendung
git clone <repository>
Klonen das Repository auf
git clone <repo> <directory>
Klonen das Repository unter
Quelle: ein Repository einrichten
So würde ich es machen, aber ich habe einen Alias erstellt, der es für mich erledigt.
$ cd ~Downloads/git; git clone https:git.foo/poo.git
Es gibt wahrscheinlich eine elegantere Möglichkeit, dies zu tun, aber ich fand, dass diese für mich am einfachsten ist.
Hier ist der Alias, den ich erstellt habe, um die Sache zu beschleunigen.Ich habe es für zsh gemacht, aber es sollte gut für Bash oder jede andere Shell wie Fish, xyzsh, fizsh usw. funktionieren.
Bearbeiten ~/.zshrc
, /.bashrc
, usw.mit Ihrem Lieblingseditor (meiner ist Leafpad, also würde ich schreiben $ leafpad ~/.zshrc
).
Persönlich bevorzuge ich jedoch die Erstellung eines ZSH-Plugins, um alle meine Aliase im Auge zu behalten.Sie können ein persönliches Plugin für oh-my-zsh erstellen, indem Sie die folgenden Befehle ausführen:
$ cd ~/.oh-my-zsh/
$ cd plugins/
$ mkdir your-aliases-folder-name; cd your-aliases-folder-name
# In my case '~/.oh-my-zsh/plugins/ev-aliases/ev-aliases'
$ leafpad your-zsh-aliases.plugin.zsh
# Again, in my case 'ev-aliases.plugin.zsh'
Fügen Sie anschließend diese Zeilen zu Ihrer neu erstellten leeren alises.plugin-Datei hinzu:
# Git aliases
alias gc="cd ~/Downloads/git; git clone "
(Ersetzen Sie hier Ihren Namen durch meinen.)
Damit die Aliase dann funktionieren, müssen sie (zusammen mit zsh) eingebunden werden (oder wie auch immer es heißt).Fügen Sie dazu in Ihrem benutzerdefinierten Plugin-Dokument Folgendes hinzu:
## Ev's Aliases
#### Remember to re-source zsh after making any changes with these commands:
#### These commands should also work, assuming ev-aliases have already been sourced before:
allsource="source $ZSH/oh-my-zsh.sh ; source /home/ev/.oh-my-zsh/plugins/ev-aliases/ev-aliases.plugin.zsh; clear"
sourceall="source $ZSH/oh-my-zsh.sh ; source /home/ev/.oh-my-zsh/plugins/ev-aliases/ev-aliases.plugin.zsh"
####
####################################
# git aliases
alias gc="cd ~/Downloads/git; git clone "
# alias gc="git clone "
# alias gc="cd /your/git/folder/or/whatever; git clone "
####################################
Speichern Sie Ihr oh-my-zsh-Plugin und führen Sie es aus allsource
.Wenn das nicht zu funktionieren scheint, führen Sie es einfach aus source $ZSH/oh-my-zsh.sh; source /home/ev/.oh-my-zsh/plugins/ev-aliases/ev-aliases.plugin.zsh
.Dadurch wird die Plugin-Quelle geladen, die Sie verwenden können allsource
von jetzt an.
Ich bin gerade dabei, ein Git-Repository mit allen meinen Aliasen zu erstellen.Schauen Sie sich diese gerne hier an: Evs Dot-Dateien.Bitte zögern Sie nicht, sie entsprechend Ihren Anforderungen weiterzuentwickeln und zu verbessern.
Aus irgendeinem Grund diese Syntax nicht aus steht:
git clone repo-url [folder]
Hier Ordner sind ein optionalen Pfad zu dem lokalen Ordner (die ein lokales Repository sein werden).
Git clone
wird auch pull
Code von Remote-Repository in das lokale Repository.
In der Tat ist es wahr:
git clone repo-url = git init + git remote add origin repo-url + git pull
Wenn Sie ssh
für git cloning
verwenden, können Sie den folgenden Befehl verwenden.
git -C path clone git@github.com:path_to_repo.git
zB:
git -C /home/ubuntu/ clone git@github.com:kennethreitz/requests.git
würde das Git Repository für requests
zu Ihrem /home/ubuntu/
Weg ziehen.
For Windows user
1> Open command prompt.
2> Change the directory to destination folder (Where you want to store your project in local machine.)
3> Now go to project setting online(From where you want to clone)
4> Click on clone, and copy the clone command.
5> Now enter the same on cmd .
It will start cloning saving on the selected folder you given .
Ich werde Sie empfehlen den folgenden Link zu folgen:
https://help.github.com/en/articles/cloning-a-repository
Wenn Sie die folgenden Fehler während git clont URL Befehl
fatal: unable to access 'URL': Could not resolve host: github.com
Dann verwenden Sie den folgenden Befehl, es zu beheben:
git config --global --unset https.proxy
In Bezug auf diese Linie von der ursprünglichen Nachricht:
"Ich weiß, wie die Dateien zu verschieben, nachdem ich den Repo geklont habe, aber diese scheint git zu brechen "
Ich bin in der Lage, das zu tun, und ich sehe keine Probleme bisher mit meinem Add verpflichten, schieben, ziehen Operationen.
Dieser Ansatz wird bereits erwähnt, aber nur in Schritten nicht abgebaut werden. Hier die Schritte, die für mich arbeiten:
- klonen den Repo in jedem frischen temporären Ordner
- cd in die Root-Ordner, den Sie nur lokal geklonten
- Sie den gesamten Inhalt des Ordners kopieren, einschließlich dem /.git Verzeichnis - in jeden vorhandenen Ordner, den Sie mögen; (Sagen wir ein Eclipse-Projekt, das Sie mit Ihrem Repo zusammenführen möchten)
Der bestehende Ordner, den Sie nur die Dateien in kopiert, ist nun bereit, mit git zu interagieren.