Wie kopiere ich alle Dateien in einem Verzeichnis aus einem anderen Zweig? Ich kann alle Dateien in diesem Verzeichnis auflisten, indem ich dies tue
git ls-tree master:dirname
Ich kann dann alle Dateien einzeln kopieren, indem ich dies tue
git checkout master -- dirname/filename
Die Verwendung von Platzhaltern war jedoch bisher ein völliger Fehlschlag. Das macht nichts:
git checkout master -- dirname/*.png
Obwohl ich denke, dass ich dazu ein Bash-Skript verwenden kann, muss es einen einfacheren Weg geben, oder?
git checkout master -- dirname; git add dirname; git commit -c $COMMIT_SHA1 --reset-author;
Wo$COMMIT_SHA1
könntebranch_a
das Commit-Objekt sein, das die gewünschte Commit-Nachricht enthält? Ich weiß nicht ohne weiteres, wie ich das Commit mit der letzten Änderung andirname
dirname
, aber es kopiert auch alle Dateien, die sich in.gitignore
dermaster
Verzweigung befinden. Irgendeine Idee warum das so ist?cherry-pick
. Es werden Commits aus anderen Zweigen angewendet, jedoch nur die Dateien, die in den gewünschten Commits geändert wurden.Wenn in Pfaden keine Leerzeichen vorhanden sind und Sie wie ich nur an Dateien mit einer bestimmten Erweiterung interessiert sind, können Sie diese verwenden
quelle
git checkout master -- *.c