Forum: PC-Programmierung GitLab: direkt im lokalen Git-Projekt arbeiten


von Jonas (Gast)


Lesenswert?

Hallo,
kann jemand weiterhelfen?

Seit kurzem arbeite ich an einem Projekt in GitLab mit. Ich habe meinen 
eigenen Branch, in dem ich arbeite. Bisher habe ich mir das Projekt 
manuell von der GitLab-Seite runtergeladen, an meinem Laptop lokal daran 
gearbeitet und dann die Dateien, die ich geändert habe, auf der 
GitLab-Seite ersetzt.
Nun soll ich aber den Master-Branch in meinen Branch reinmergen, und das 
soll ich direkt im Terminal machen. Ich habe in den docs die Befehle 
gefunden, wie man über das Terminal das Projekt auf die Festplatte klont 
und habe auch den Master in meinen Branch reingemerget. Wenn ich dann 
aber in das geklonte Projekt reinschaue, sehe ich nur eine Version und 
keine verschiedenen Branches.
Jetzt würde ich natürlich gerne so vorgehen, dass ich direkt in dem 
lokalen Git-Projekt arbeite, bin aber etwas ratlos, wie ich meinen 
Branch finde, um das so zu machen.
Weiß jemand, wie das geht bzw. wo der Haken liegt?

Kurze Anmerkung, habe bis jetzt leider so gut wie noch gar keine 
Erfahrung mit GitLab, da ich ziemlich unvermittelt in diesem Projekt 
gelandet bin. Bitte um Nachsicht, falls ich etwas nicht auf Anhieb 
verstehe.

von mukel (Gast)


Lesenswert?

Könntest du mal die Befehle (und deren Ausgaben) nennnen, die du genutzt 
hast?

Dann kann man besser einschätzen was du genau gemacht hast, und wo es 
hackt.

von mukel (Gast)


Lesenswert?

Im Endeffekt wäre der Workflow ja:

1) SSH Key erstellen und bei gitlab hinzufügen
2) per git clone ssh://git@gitlab.com/REPO klonen
3) cd REPO
4) git fetch --all
5) git checkout DEIN_BRANCH
6) git merge

Wenn ich dich richtig verstehe scheitert es bei 5)? Was sagt denn die 
Ausgabe von git branch?

von mukel (Gast)


Lesenswert?

Edit:

6) git merge master

Und statt git branch bitte git branch --all

von Jonas (Gast)


Lesenswert?

Vielen Dank für die schnelle Antwort!

Ich habe mich daran orientiert:
https://docs.gitlab.com/ee/gitlab-basics/start-using-git.html

Habe das Projekt via https geklont.

cd REPO
git checkout MY-BRANCH
> Branch 'MY-BRANCH' folgt nun Remote-Branch 'MY-BRANCH' von 'origin'.
> Zu neuem Branch 'MY-BRANCH' gewechselt
git merge master

Dann öffnet sich im Terminal eine Datei für eine Beschreibung. Ich 
speichere und schließe sie. Die Ausgabe ist:
Merge made by the 'recursive' strategy.
 [Pfad zu einer Datei im Projekt] | 36 
++++++++++++++++++++++++++++++++++-
1 file changed, 35 insertion(s), 1 deletion(s)

Ich hätte erwartet, dass merge-Konflikte auftreten könnten, weil 
vermutlich in beiden Branches seperat weitergearbeitet wurde. Aber 
anscheinend war das nicht der Fall?

Außerdem wüsste ich gerne, wie ich jetzt in dem lokalen Git-Projekt in 
meinem Branch weiterarbeite. Ich sehe dort nur eine Version des 
Projektes, weiß also nicht, wie ich an die Dateien komme, die zu meinem 
Branch gehören.

von mukel (Gast)


Lesenswert?

Gut, dann hat das ja alles funktioniert und es gabt keinerlei Konflikte 
die nicht aufgelöst werden konnten.

Die Datei, die sich geöffnet hat, beinhaltet die Commit-Message. Der 
Merge wird als Commit gehandhabt.

Gib mal git status ein, dort wird dir angezeigt auf welchem Branch du 
bist.
Aktuell solltest du auf DEIN_BRANCH sein.
Wechseln kannst du jederzeit per git checkout TARGET_BRANCH.

Dein Dateisystem sieht immer nur den aktuell ausgewählten Branch, 
wechseln kannst du wie gesagt per git checkout.

Für dich jetzt relevante Befehle (die von dir verlinkte Gitlab Seite 
finde ich eher unübersichtlich):
git status -> Zeigt Branch und alle von dir geänderten Dateien
git diff -> Änderungen aller Dateien seit dem letzten Commit
git add DATEI -> Datei zu commit hinzufügen (staging)
git commit -> alle Dateien in staging werden commitet.
git push -> Lokale Commits hochladen
git pull -> Neuste Änderungen vom Server runterladen

von Jonas (Gast)


Lesenswert?

Ah, super, alles klar. Wird mir dann auch im Datei-Manager nur der 
Branch angezeigt, in dem ich mich gerade befinde?

Ausgabe bei 'git status':
>Auf Branch MY-BRANCH
>Ihr Branch ist 3 Commits vor 'origin/MY-BRANCH'.
>  (benutzen Sie "git push", um lokale Commits zu publizieren)
>
>nichts zu committen, Arbeitsverzeichnis unverändert

Vielen Dank für die Übersicht über die Befehle!

von mukel (Gast)


Lesenswert?

Jonas schrieb:
> Ah, super, alles klar. Wird mir dann auch im Datei-Manager nur der
> Branch angezeigt, in dem ich mich gerade befinde?

Ja, genau. Bei Ändern des Branch werden die Dateien entsprechend 
ausgetauscht.

von Jonas (Gast)


Lesenswert?

Im Dateimanager sehe ich nur den Branch, in dem ich mich gerade aktuell 
befinde. Wie kann ich diesen Branch dann in einer IDE bearbeiten?

Ich habe eben das Projekt in Visual Studio Code geöffnet und hatte 
erstmal den Fehler "Unable to watch for file changes in this large 
workspace", deshalb vermute ich, dass dort alle Branches geladen werden, 
kann das sein???

...bin etwas lost wie ich das hinkriege. Ich würde den Branch nämlich 
gerne in einer vernünftigen IDE statt im Texteditor bearbeiten.

von imonbln (Gast)


Lesenswert?

Erstmal dein Problem hat nichts mit gitlab zu tun, sondern erscheint mir 
als fehlendes Grundwissen für den Umgang mit Git. Das auf der Anderen 
Seite ein Gitlab Server steht kannst du erstmal vernachlässigen.

Ich empfehle Dir, Dich mit einen erfahrenden Kollegen hinzusetzen. 
Meiner Meinung nach hilft das ungemein, wenn man sich das tägliche tun 
in einer Art extreme Programming Session von einen Experten abguckt. Ein 
Buch könnte auch helfen die Grundlagen zu verstehen. das Git Buch von 
O'reilly, zum Beispiel soll ganz gut sein.

mukel schrieb:
> Im Endeffekt wäre der Workflow ja:
>
> 1) SSH Key erstellen und bei gitlab hinzufügen
> 2) per git clone ssh://git@gitlab.com/REPO klonen
> 3) cd REPO
> 4) git fetch --all
> 5) git checkout DEIN_BRANCH
> 6) git merge

Das ist der Workflow für dein Problem den branch zu mergen.
Ich persönlich würde bei 4. statt des "git fetch" ein git pull machen. 
Was der Unterschied ist, lasse ich bewusst mal offen (damit du es Dir 
selbst erarbeitetest).

Außerdem solltest du vielleicht noch einen Schritt anhängen, damit du 
einen Remote Branch hast, der auch auf den Gitlab Server liegt.

7.) git push -u origin DEIN_BRANCH

Jonas schrieb:
> Ich habe eben das Projekt in Visual Studio Code geöffnet und hatte
> erstmal den Fehler "Unable to watch for file changes in this large
> workspace", deshalb vermute ich, dass dort alle Branches geladen werden,
> kann das sein???

Ich denke nicht das Git hier dein Problem ist? ich habe Kollegen welche 
wunderbar mit sehr Komplexen Gitprojekten und Visual Studio Code 
arbeiten.
Ich denke eher du hast ein anderes Problem, mit deinen Projekt. ich 
persönlich nutze Aber VisualStudio nicht, von daher fällt es mir schwer 
dir zu helfen. Aber auch als bekennender Linux Benutzer, muss man 
neidlos anerkennen, das die Dokumentation für Entwickler von Mircosoft, 
mittlerweile mehr als Vorbildlich ist.

Ich empfehle dir 
https://code.visualstudio.com/docs/editor/versioncontrol zu lesen und 
ein VisualStudio Code entsprechend einzurichten.

Jonas schrieb:
> ...bin etwas lost wie ich das hinkriege. Ich würde den Branch nämlich
> gerne in einer vernünftigen IDE statt im Texteditor bearbeiten.

Was eine vernünftige IDE, ist wurde schon in so vielen Flame Wars 
diskutiert, meine persönliche Präferenz ist, offensichtlich eine 
Komplett andere als deine.

Beitrag #6300318 wurde vom Autor gelöscht.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.