Projekt-Datenbanken: Git. Übertragen. Pull. Push & mehr

In einem früheren Blog-Beitrag haben wir Ihnen Git (ein Versionskontrollsystem) und Github (ein Cloud-basierter Hosting-Dienst) vorgestellt und wie Sie Ihren 4D Code mit anderen Entwicklern teilen können. In diesem Blog-Beitrag gehen wir noch einen Schritt weiter, indem wir einige Szenarien untersuchen, die einem Entwickler begegnen können, z. B. das Klonen eines entfernten Repositorys, das Ignorieren bereits übergebener Dateien und das Lösen von Merge-Konflikten.

Voraussetzungen

Bevor wir weitermachen, gehen wir davon aus, dass Sie wissen, wie man eine Projektdatenbank erstellt oder eine binäre Datenbank in ein Projekt konvertiert. Eine Git-Installation auf Ihrem Rechner und ein Konto bei Github sind zwingend erforderlich. Wenn Sie dies noch nicht haben, lesen Sie bitte diesen Blogbeitrag, um zu erfahren, wie Sie vorgehen müssen.

Klonen eines entfernten Repositorys

Es ist an der Zeit, die Arbeit an unserer Anwendung fortzusetzen. Aber aus irgendeinem Grund haben Sie das Projekt, an dem wir das letzte Mal gearbeitet haben, nicht auf Ihrem Rechner. Was ist zu tun?

Da wir ein Repository auf GitHub erstellt haben(vorheriger Blog-Beitrag), existiert es als Remote-Repository. Jetzt müssen wir eine lokale Kopie auf unserem Rechner erstellen und zwischen den beiden Standorten synchronisieren. Wie gehen Sie vor?

  1. Verbinden Sie sich mit Ihrem Github-Konto,
  2. Navigieren Sie zur Hauptseite des Repositorys,
  3. Klicken Sie auf die Schaltfläche„Clone or download“ (Klonen oder Herunterladen) und dann auf das Symbol für die Zwischenablage (wie in der Abbildung unten dargestellt):
  4. Öffnen Sie ein Terminal und geben Sie den Ort an, an den Sie das Verzeichnis klonen möchten
  5. Geben Sie git clone ein und fügen Sie die URL ein, die Sie in Schritt 3 kopiert haben.

blank

Herzlichen Glückwunsch! Sie haben eine lokale Kopie auf Ihrem Rechner erstellt.

gitignore

Ich möchte nicht, dass Git eine bestimmte Datei oder einen bestimmten Ordner verfolgt

Manchmal gibt es Dateien oder Verzeichnisse in unserem Projekt, die nicht verfolgt werden sollen. In diesem Fall ist eine .gitignore-Datei sehr nützlich. Wie der Name schon sagt, weist sie Git an, welche Dateien, Verzeichnisse oder Muster im Repository ignoriert werden sollen.

In unserem Fall soll Git den Ordner Data (der das Journal, die Voreinstellungen, .4dd und den Ordner DerivedData enthält) ignorieren.

  • .gitignore erstellen

blank

  • Konfigurieren der ignorierten Dateien/Ordner

blank

.gitignore verwendet Globbing-Muster, um Dateinamen zu vergleichen. Sie können Ihre Muster mit verschiedenen Symbolen konstruieren. Um z. B. einen Ordner zu ignorieren, hängen wir einen Schrägstrich an das Ende des Ordnernamens an. In diesem Artikel erfahren Sie mehr über .gitignore-Muster.

Ignorieren von Dateien, die bereits in das Repository übertragen wurden

Denken Sie daran, dass Sie beim Erstellen eines neuen Projektarchivs auch eine .gitignore-Datei für alle Dateimuster erstellen sollten, die Sie ignorieren möchten. Es kann jedoch vorkommen, dass Dateien durchrutschen, die Sie später ignorieren möchten.

Kein Grund zur Panik! Mit ein paar einfachen Schritten können Sie Ihr Repository bereinigen und sicherstellen, dass diese Dateien ignoriert werden:

  1. Dateien zum Entfernen vormerken, sie aber lokal belassen: git rm -r –cached
  2. Überprüfen Sie das gesamte Arbeitsverzeichnis auf neue, gelöschte oder geänderte Dateien und fügen Sie sie dem Index hinzu: git add
  3. Senden Sie die Dateien im Staging-Bereich an das lokale Repository: git commit -m „Clean up ignored files“
  4. Senden Sie die Änderungen an das entfernte Repository: git push

Voilà! Sie können im entfernten Repository überprüfen, dass die Dateien dort nicht vorhanden sind!

Wichtiger Hinweis: Ignorierte Dateien bleiben in der Repository-Historie erhalten. Deshalb sollten Sie beim Anlegen neuer Projektarchive auch .gitignore-Dateien erstellen, die alle Dateien, Ordner oder Muster enthalten, die Sie ignorieren möchten. Andernfalls müssen Sie das Repository aus Github löschen und erneut pushen, wenn Sie bestimmte Dateien nicht in der Historie behalten wollen.

So lösen Sie Zusammenführungskonflikte

Zuallererst: STAY CALM!

Wenn mehrere Entwickler mit demselben Versionskontrollsystem arbeiten, wird die Bewältigung möglicher Konflikte zu einer alltäglichen Aufgabe. Es gibt mehrere Möglichkeiten. Der Konflikt kann leicht mit dem 4D Editor gelöst werden, aber da alle Dateien jetzt textbasiert sind, können Sie auch einen Texteditor verwenden, um die Konflikte manuell zu lösen. Außerdem gibt es viele Merge-Tools, die in GIT integriert werden können. Im folgenden Beispiel verwenden wir den 4D-Editor, um die Konflikte aufzulösen.

Schauen wir uns einen Konflikt mit einer 4D-Methode an. Dazu müssen wir einen zweiten Benutzer / ein lokales Git-Repository simulieren, indem wir den Datenbankordner duplizieren und dafür sorgen, dass er mindestens eine Projektmethode enthält. Jetzt gibt es zwei Datenbankordner: my4DApplication und my4DApplication2. Öffnen Sie nun beide Anwendungen.

    1. Öffnen Sie die Projektmethode in der ersten Anwendung und fügen Sie einen Inhalt hinzu (z. B. einen Kommentar).blank
    2. Wenn Sie git status ausführen, werden die Änderungen in der Methode erkannt. Übertragen Sie die neuen Änderungen und pushen Sie sie.
    3. Szenario: Jemand anderes ändert die gleiche Methode zur gleichen Zeit. Simulieren wir dies, indem wir dieselbe Methode in der zweiten Anwendung öffnen und sie mit einem anderen Kommentar ändern.blank
    4. Commit und Push der neuen Änderungen. Wie Sie sehen können, wird der Push abgelehnt und stattdessen ein Pull vorgeschlagen:blank
    5. Das Ausführen des vorgeschlagenen Git-Pulls ist nicht hilfreich:

blank

Was nun?

Öffnen Sie die Methode mit dem Konflikt. Die Zeile mit dem Kopf zeigt die lokalen Änderungen an und die rote Zeile zeigt die Nummer des Commits des anderen Benutzers an.

blank

Die Lösung des Konflikts ist einfach: Wählen Sie einfach die richtigen Teile des Codes aus und pushen Sie die Änderungen. In diesem Fall behalte ich beide ALERT Nachrichten mit unterschiedlichen Kommentaren:

blank

Sobald dies geschehen ist, kann der andere Benutzer git pull ausführen, um die neuen Änderungen zu erhalten. Beide Benutzer haben nun den gleichen Inhalt in der Methode.

blank

Um Konflikte von vornherein zu vermeiden

Es gibt keinen sicheren Weg, um Konflikte immer zu vermeiden, aber die Ausführung von git fetch kann Ihnen eine Menge Merge-Kopfschmerzen ersparen. Es prüft, ob das entfernte Repository neue Übertragungen enthält. Wenn Sie dies nicht tun, bevor Sie versuchen zu pushen, wird der Fehler [Rejected] angezeigt.

Schlusswort

In diesem Beitrag haben wir verschiedene Szenarien besprochen, denen ein Entwickler bei der Arbeit mit Git begegnen kann. In einem der nächsten Beiträge werden wir uns von der Kommandozeile lösen und Ihnen zeigen, wie Sie einen GUI-Client für die Arbeit mit Git verwenden können.

Avatar
- Product Marketing Manager Intissar kam 2017 als Product Marketing Manager zu 4D. Sie arbeitet eng mit den Produkt-, Marketing-, Engineering- und technischen Support-Teams zusammen, um den verschiedenen Zielgruppen das "Warum", das "Wie" und das "Was" neuer und aktualisierter Funktionen zu vermitteln. Diese enge Zusammenarbeit ermöglicht es ihr, Botschaften zu formulieren und ausführliche Inhalte und Codebeispiele für den 4D Blog und die Website zu schreiben. Nach ihrem Abschluss als Diplom-Ingenieurin für Informatik an der VINCI Universität arbeitete Intissar als Software-Ingenieurin in mehreren Startups. Ihre praktische Erfahrung umfasst Software-Spezifikation, -Design und -Entwicklung, User-Training und -Support sowie Team-Management.