Ich habe Schildkröte SVN für einige Jahre benutzt, aber jetzt bewege ich mich mit Git. Könnte jemand erklären, was der Prozess für das Tun des Folgenden in Git ist:
Holen Sie sich spätestens, Check in
Ich habe es geschafft, das Repository erfolgreich zu klonen, Änderungen vorzunehmen, festzuschreiben und dann die Änderungen zu übertragen. Laut Git ist alles in Ordnung, aber ich kann die Änderungen auf dem Remote-Server nicht sehen.
Mein Setup ist:
Remote-Server mit Git-Repository und Dev-Computer, der eine Verbindung zu Git herstellt, um eine lokale Kopie der Lösung zu erstellen, auf der gearbeitet werden soll.
Auch wenn ich den Verlauf auf meinem lokalen Computer ansehe, ist alles in Ordnung! Es zeigt den gesamten Verlauf, wenn ich zum Server gehe, werden die Änderungen nicht angezeigt!
Wenn ich es nicht richtig mache, lass es mich wissen!
Antworten:
Zur Beantwortung Ihrer Frage ... In Git gibt es wirklich keinen "Check in Check out" -Prozess. Diese Verweise gelten für zentralisiertes, nicht verteiltes VCS.
Bei einem zentralisierten VCS gibt es eine absolute Codebasis ... Die Quelle. Bei einem Distributed VCS ist das nicht so ...
Git hat eine Abstraktionsebene namens Index, die den Code des Arbeitsverzeichnisses vom Repository trennt. In dieser Hinsicht müssen Sie Ihre Änderungen zum Index hinzufügen und sie dann in das Repository übertragen. Dieses Commit spiegelt jedoch keine direkte Aktualisierung des Arbeitsverzeichnisses wider.
Damit Sie nach einem Commit die Änderungen auf der Remote-Seite physisch "sehen" können ... Sie benötigen einen Hook, der an das Remote-Arbeitsverzeichnis gesendet wird, um aus dem aktualisierten Repo ...
Vermutung hier ... Aber ich gehe davon aus, dass Sie etwas im Sinne eines Website-Management-Workflows tun möchten. Verwenden von Git zum Verwalten einer Website
Git ist ein extrem leistungsfähiges und robustes DVCS ... Sie müssen jedoch vollständig verstehen, wie es funktioniert, um es effektiv zu nutzen. Bei allem Respekt empfehle ich Ihnen, die Dokumentation vollständig zu lesen. Hier ist jedoch ein sehr seriöser Ausgangspunkt :-) Git Magic
quelle
Ich zeige meinen Workflow mit Github als Server für meine Repositories:
Jetzt haben Sie Ihre lokale Kopie. Wenn Sie bereits eine Kopie haben, müssen Sie nicht erneut klonen. Einfach ziehen:
Mit diesem Befehl werden alle Aktualisierungen vom Server auf Ihren Computer heruntergeladen.
Jetzt kannst du arbeiten. Machen Sie Commits. Wenn du fertig bist. Sie können Ihren Code mit den folgenden Befehlen in den Server übertragen:
Befehl "Git Push Origin Master" setzen Sie Ihren Code auf den Server. Wenn andere Benutzer Commits gepusht haben!?!?!? Gut: bevor Sie Ihren Code drücken, müssen Sie "pull" ausführen. Dies ist die Reihenfolge, die ich bevorzuge:
1:
2:
3:
Wenn es nach dem Pull einige Konflikte gibt, beheben Sie sie einfach, fügen Sie sie hinzu, schreiben Sie sie fest und drücken Sie sie schließlich.
quelle
git pull --rebase
, um zu vermeiden, dass der Verlauf durch unnötige Zusammenführungen überladen wird.$ git merge <branch-name> --no-ff
. Vielen Dank für Ihr Feedback@Funky,
Da Sie den Verlauf lokal sehen können, gehe ich davon aus, dass Sie Ihre Änderungen ordnungsgemäß in die lokale Kopie Ihres Git-Repos übernehmen können. Es ist nicht klar, was Sie auf der Fernbedienung ('dem Server') tun: "... wenn ich zum Server gehe, werden die Änderungen nicht angezeigt!". Je nachdem, wie der Server (remote) konfiguriert ist, sehen Sie die Dinge möglicherweise nicht so wie auf Ihrem Entwicklungscomputer.
Wenn Sie sicher sind, dass Ihre Änderungen tatsächlich nicht auf der Fernbedienung (dem Server) vorhanden sind, fehlt möglicherweise nur Folgendes (auf Ihrem lokalen Entwicklercomputer):
git push origin master
Ein
git status
vor und nach dem obigen Befehl gibt Ihnen nützliche Informationen zu Unstimmigkeiten zwischen Ihrer lokalen und Remote-Kopie.Gehen zu überprüfen, zu einer anderen Maschine (oder einen anderen Ordner auf der gleichen Entwickler - Maschine) und tun:
git clone <git-url-of-your-server>
. Und überprüfen Sie, ob Ihre Änderungen vorhanden sind.quelle