So konvertieren Sie ein vorhandenes nicht leeres Verzeichnis in ein Git-Arbeitsverzeichnis und übertragen Dateien in ein Remote-Repository


642
  1. Ich habe ein nicht leeres Verzeichnis (z. B. / etc / Something) mit Dateien, die nicht umbenannt, verschoben oder gelöscht werden können.

  2. Ich möchte dieses Verzeichnis in Git an Ort und Stelle einchecken.

  3. Ich möchte in der Lage sein, den Status dieses Repositorys mit "git push" oder ähnlichem in ein Remote-Repository (auf einem anderen Computer) zu verschieben.

Dies ist trivial mit Subversion (derzeit machen wir es mit Subversion) mit:

svn mkdir <url> -m <msg>
cd <localdir>
svn co <url> .
svn add <files etc>
svn commit -m <msg>

Was ist das Git-Äquivalent?

Kann ich "git clone" in ein leeres Verzeichnis "verschieben und einfach das .git-Verzeichnis verschieben und alles funktionieren lassen?


5
Vielleicht verstehe ich es einfach nicht, aber können Sie nicht einfach git initim lokalen Verzeichnis laufen ?
Philipp

Meinen Sie damit, dass Sie woanders ein Repo haben und diesem Repo den gesamten Inhalt dieses anderen Verzeichnisses hinzufügen möchten, das kein Repo ist? Oder versuchen Sie nur, ein neues Repo in diesem Verzeichnis zu erstellen?
Cascabel

In einigen Antworten wird Github erwähnt, aber die Frage selbst betrifft Git. Github ist kein Git und es ist nicht das Zentrum des Git-Universums.
vfclists

Antworten:


1053

Vorausgesetzt, Sie haben einen Git-Daemon <url>und ein leeres Repository eingerichtet:

cd <localdir>
git init
git add .
git commit -m 'message'
git remote add origin <url>
git push -u origin master

12
Die Anweisungen von abyx scheinen zu funktionieren. Führe ich jetzt aus: git config branch.master.remote originund git config branch.master.merge refs/heads/master was ich am Ende haben werde, ist genau das gleiche, als ob ich das Remote-Repository geklont hätte? dh git pullund git pushwird einfach funktionieren ?
HMW

34
Das hat auch bei mir funktioniert. Ich musste zuerst ein Projekt AppNamein GitHub erstellen . Mir war nicht klar, was genau die <url>Mittel waren. Für diejenigen, die die gleiche Frage haben, verwenden wir einfach GitHub.com, wir führen unser Repo nicht aus, und dann sah das <url>in der 5. Zeile verwendete ungefähr so ​​aus :https://github.com/CompanyName/AppName
Bart

12
Wenn Sie ein Repository einrichten, das nicht auf GitHub vorhanden ist, stellen Sie sicher, dass Sie 'git --bare init' verwenden, um das leere Remote- Repository einzurichten , und nicht 'git init' (wie ich) , da sonst der Push fehlschlägt.
jdusbabek

3
Ich wollte nur hinzufügen, dass ich nicht pushen konnte, bis ich ein: git pull --rebase
Artemix

5
Wenn git ablehnt, weil remote einige geringfügige Änderungen enthält (.README, .gitignore usw.), versuchen git pull origin master --allow-unrelated-historiesSie, eine Zusammenführung durchzuführen .
Karlisup

78

So mache ich das. Ich habe eine Erklärung hinzugefügt, um zu verstehen, was zum Teufel los ist.

Initialisieren Sie das lokale Repository

  • initialisiere zuerst Git mit

    git init

  • Fügen Sie alle Dateien zur Versionskontrolle mit hinzu

    git hinzufügen.

  • Erstellen Sie ein Commit mit einer Nachricht Ihrer Wahl

    git commit -m 'AddingBaseCode'

Remote-Repository initialisieren

  • Erstellen Sie ein Projekt auf GitHub und kopieren Sie die URL Ihres Projekts. Wie nachfolgend dargestellt:

    Geben Sie hier die Bildbeschreibung ein

Verknüpfen Sie Remote Repo mit Local Repo

  • Verwenden Sie nun die kopierte URL, um Ihr lokales Repo mit dem Remote-GitHub-Repo zu verknüpfen. Wenn Sie ein Repository mit git clone klonen, wird automatisch eine Remoteverbindung namens origin erstellt, die auf das geklonte Repository verweist. Der Befehl remote wird zum Verwalten einer Reihe von nachverfolgten Repositorys verwendet.

    git remote add origin https://github.com/hiteshsahu/Hassium-Word.git

Synchronisieren

  • Jetzt müssen wir den lokalen Code mit dem Remote-Code zusammenführen. Dieser Schritt ist wichtig, da wir sonst keinen Code auf GitHub übertragen können. Sie müssen 'git pull' aufrufen, bevor Sie Ihren Code eingeben.

    Git Pull Origin Master - Allow-Un-Related-Histories

Übernehmen Sie Ihren Code

  • Zum Schluss alle Änderungen auf GitHub pushen

    Git Push -u Origin Master


1
Ich habe "git pull" wie in diesem Beitrag beschrieben ausgeführt und einen Fehler erhalten. Ich habe mit dem akzeptierten "Git Push" fortgefahren und wenn ich zu Bonobo Git Server gehe, kann ich jetzt die Änderung sehen. Vielen Dank für diesen Beitrag mit klaren Erklärungen zum GIT-Befehl.
Schlebe

Was bedeutet das: "und kopieren Sie die URL Ihres Projekts und kopieren Sie die URL des Projekts." Ist dies ein Tippfehler oder versuchen Sie, über zwei verschiedene URLs zu sprechen, oder?
Gwideman

Das ist ein Tippfehler, kopieren Sie einfach die URL des Projekts, wie im Screenshot gezeigt
Hitesh Sahu

2
Dies ist die richtige Antwort und sollte akzeptiert werden. In der akzeptierten Antwort fehlt der Schritt "Synchronisieren".
Ilan

28

Hier ist meine Lösung:

git init
git remote add origin PATH/TO/REPO
git fetch
git checkout -t origin/master

Gute Lösung, wenn Sie Remote Repo mit .gitignore&README.dm
Hattori Hanzō

12

Wenn das Remote-Repository nicht leer ist (dies ist der Fall, wenn Sie IBM DevOps auf hub.jazz.net verwenden), müssen Sie die folgende Reihenfolge verwenden:

cd <localDir>
git init
git add -A .
git pull <url> master
git commit -m "message"
git remote add origin <url>
git push

EDIT 30. Januar 17: Bitte beachten Sie die Kommentare unten, stellen Sie sicher, dass Sie auf dem richtigen Repo sind!


Die obigen Befehle haben alle meine vorhandenen Builds gelöscht :( Bitte seien Sie vorsichtig, bevor Sie die obigen Schritte ausführen
Selenium Framework

7

Wann ist ein Github-Repository nicht leer, wie z. B. Gitignore und Lizenz?

Verwenden Sie pull --allow-non-related-histories und push --force-with-lease

Verwenden Sie Befehle

git init
git add .
git commit -m "initial commit"
git remote add origin https://github.com/...
git pull origin master --allow-unrelated-histories
git push --force-with-lease

1
Ich musste diese letzte Aussage ändern, um sie ähnlicher zu machengit push -u origin master --force-with-lease
siehe

2

Der einfachste Weg, dies zu tun, den ich nützlich finde, ist der folgende.

Dies ist möglicherweise nicht der offizielle Weg, aber es funktioniert gut.

Angenommen, Sie haben ein Projekt mit dem Namen "XYZ " auf Ihrem PC. Jetzt möchten Sie ein Git-Repo dieses Projekts auf Github erstellen und dessen Funktionen verwenden.

Schritt 1 : gehe zu "www.github.com "

Schritt 2 : Erstellen Sie ein Repository mit einem "README.md " Datei (benennen Sie es nach Ihren Wünschen)

Schritt 3 : Klonen Sie das Repository auf Ihren PC.

Schritt 4 : Im geklonten Ordner erhalten Sie zwei Dinge: " .git" Ordner und eine " README.md" Datei. Kopieren Sie diese beiden in Ihren Projektordner "XYZ ".

Schritt 5 : Löschen Sie das geklonte Repo.

Schritt 6 : Fügen Sie alle Dateien und Ordner Ihres Projekts hinzu, schreiben Sie sie fest und verschieben Sie sie.

Jetzt können Sie Ihr Projekt einfach XYZals Git-Repository verwenden.


0

Ich hatte ein ähnliches Problem. Ich habe ein neues Repository erstellt, NICHT IN DEM VERZEICHNIS, DAS ICH EIN REPOSITORY ERSTELLEN WOLLTE . Ich habe dann die erstellten Dateien in das Verzeichnis kopiert, in dem ich ein Repository erstellen wollte. Öffnen Sie dann ein vorhandenes Repository mit dem Verzeichnis, in das ich die Dateien gerade kopiert habe.

HINWEIS: Ich habe Github Desktop verwendet, um das bestehende Repository zu erstellen und zu öffnen.


0

Hier ist meine Lösung, wenn Sie das Repository mit einem Standardwert readme fileoder erstellt habenlicense

git init
git add -A
git commit -m "initial commit"   
git remote add origin https://<git-userName>@github.com/xyz.git //Add your username so it will avoid asking username each time before you push your code
git fetch
git pull https://github.com/xyz.git <branch>
git push origin <branch> 
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.