Fragen rund um git

Hi,

weiß jemand, mit welchen git-Befehlen ich veränderte Daten von einem branch zu einem anderen bekomme?

Beispiel:

mit diesem Commit habe ich die Hilfe zur Doku in v6.2, also im master-branch angepasst. Ich will das aber auch in den v7-branch bringen.

  • Irgendwie gibt es cherry-pick für einzelne commits (?), aber ich kann das nicht anwenden, wenn die darunterliegende DAteistruktur sich geändert hätte (in diesem Fall ist sie gleich)
  • ich könnte zwar einfach die rst-Dateien aus dem einen branch in den anderen branch kopieren, aber die sind nicht zur selben Zeit sichtbar, also müsste ich lokal zwei Repos auschecken, einmal mit dem einen, einmal mit dem anderen branch… auch blöd, beide aktuell zu halten.

Weiß jemand wovon ich rede?
VG, Tobias

Hallo Tobias,
vielleicht ich cherry-picking das was du suchst. Damit kannst du einzelne commits eines Branches in einen anderen Branch holen:

Einzelne Commits holen - Cherry Picking

Oft entwickelt man auf 2 unterschiedlichen Branches (z.B. stable und develop), die man nicht komplett mergen kann. Gibt es nun auf develop einen Commit, den man auch in stable haben möchte, kann man diesen hereinholen mit:

git checkout stable
git cherry-pick <SHA1>

Die eines commits ermittelt man mit:

git log
git lg

Hallo Tobias,

leider nein.

Gruß

Alois

Irgendwie gibt es cherry-pick für einzelne commits (?), aber ich kann das nicht anwenden, wenn die darunterliegende DAteistruktur sich geändert hätte (in diesem Fall ist sie gleich)

Verstehe nicht so recht, bei gleicher Dateistruktur kannst du es ja dann anwenden!!??

Übrigens ist es auch ein Versuch Wert cherry-picking zu versuchen bei veränderter Dateisystemstruktur.
Die Files werden ja in git anhand ihres SHA-Wertes gefunden und nicht aufgrund ihres Ortes im Dateibaum.

LG, Rüdiger

Hallo,

Ich bin der gleichen Meinung. Außer cherry-pick kenne keine Lösung.

Gruß

Arnaud

HI Rüdiger, hi Arnaud, danke für die Antworten,
tatsächlich habe ich in dem vergangenen Fall einfach den Dateibaum vorher von Hand angepasst, das werde ich vllt. für die v6.2 nicht machen, will aber änderungen in v6.2 und v7 gleich übernehmen.
Ich hatte gehofft es gibt so etwas wie git merge up-to-date-file_in_v7 into outdated-file_in_v62.

Ich werde also cherry-pick versuchen.
Vielen Dank, Tobias

Hallo zusammen,

ich habe das jetzt erfolglos einmal getestet:

~/my-docs$ git cherry-pick d4086e0374a8a7eed16a30436953f3fcc34a55be
error: Konnte d4086e0... (rename netzbrief - subnetting, only english filenames) nicht anwenden
Hinweis: nach Auflösung der Konflikte, markieren Sie die korrigierten Pfade
Hinweis: mit 'git add <Pfade>' oder 'git rm <Pfade>'und tragen Sie das Ergebnis mit
Hinweis: 'git commit' ein
tobias@witten:~/my-docs$ git status
Auf Branch v7
Ihr Branch ist auf dem selben Stand wie 'origin/v7'.
Sie führen gerade "cherry-pick" von Commit d4086e0 aus.
[...]
	beide gelöscht:         source/howtos/netzbrief-basics/index.rst
	beide gelöscht:         source/howtos/netzbrief-basics/media/configs/linuxmuster-subnet-10.16.txt
	beide gelöscht:         source/howtos/netzbrief-basics/media/cups01.png
[...]
	von denen hinzugefügt:  source/howtos/subnetting-basics/index.rst
	von denen hinzugefügt:  source/howtos/subnetting-basics/media/configs/linuxmuster-subnet-10.16.txt
	von denen hinzugefügt:  source/howtos/subnetting-basics/media/cups01.png
[...]
	von uns hinzugefügt:    source/systemadministration/network/subnetting-basics/index.rst
	von uns hinzugefügt:    source/systemadministration/network/subnetting-basics/media/configs/linuxmuster-subnet-10.16.txt
	von uns hinzugefügt:    source/systemadministration/network/subnetting-basics/media/cups01.png

Also, beispielsweise hat sich die Datei cups01.png überhaupt nicht geändert, außer dem Pfad und genau diese Änderung kann git in diesem Commit nicht durch cherry-pick nachvollziehen.
Liegt vllt. daran, dass die Datei von mir im Ziel-branch auch schon verschoben war. Denselben Umzug hätte man vielleicht in beiden Branches hingekriegt…

VG, Tobias