Bewegen gitlab Projekt unter einem anderen Projekt Verzeichnis

Habe ich zwei vorhandenen gitlab-Projekte: projectA mit branchA und projectB mit branchB.
Ich möchten verschieben Sie den gesamten Inhalt der branchA werden unter einem Verzeichnis von branchB ohne Geschichte verpflichtet, wenn möglich.

Ich habe versucht, das Klonen der beiden Projekte zu einer Maschine, kopieren Sie die Dateien von einem Zweig zum anderen und zu Begehen, aber dann verlor ich die Dateien Geschichte.

Wie kann das getan werden?
Dank

InformationsquelleAutor Or Bar Yaacov | 2017-10-08



One Reply
  1. 0

    Klon projectB

    git clone git clone <projectB repo URL>
    

    Erstellen Sie einen leeren verwaisten Zweig

    git checkout --orphan temp_branch
    git rm -rf .
    

    Fügen Sie remote von projectA

    git remote add -f projectA  <projectA repo URL>
    

    Merge temp_branch mit branchA von projectA

    git merge projectA/branchA --allow-unrelated-histories
    

    An dieser Stelle könnte man verschieben der Inhalte, wie Sie sind oder auch schreiben die Geschichte, um es scheinen, dass diese Dateien schon immer ein sub-Ordner.

    HINWEIS: wählen Sie eine oder das andere, entweder option 1 oder option 2. Dann können Sie den rest der Schritte in der Regel.

    Verschieben Sie den Inhalt des temp_branch sub-Ordner und commit(ohne rewrite – option 1)

    mkdir projectA
    git mv -k * projectA/
    git add .
    git commit -m "Move projectA/branchA to sub folder" 
    

    Verschieben Sie den Inhalt des temp_branch sub-Ordner und commit(mit rewrite – option 2)

    git filter-branch --tree-filter "mkdir projectA;git mv -k * projectA" HEAD
    

    Verschmelzen mit projectB/branchB

    git checkout branchB
    git merge temp_branch --allow-unrelated-histories
    

    Löschen temp_branch und projectA remote

    git branch -D temp_branch 
    git remote remove projectA
    

    Push-to – projectB Fernbedienung (stellen Sie sicher, Sie sind auf branchB)

    git checkout branchB
    git push origin branchB
    

    Sollten Sie fusioniert haben die beiden unter Beibehaltung der git Geschichte der beiden Zweige. Da die Geschichten stehen in keinem Zusammenhang empfehle ich die Verwendung von option 2, denn es schreibt die Geschichte in einer solchen Weise, dass es scheint, projectA immer existiert in seiner sub-Ordner. Nur meine Meinung, obwohl.

    Letzte ANMERKUNG:, dass beim verschieben der Dateien in ein sub-Ordner, stellen Sie sicher, verschieben Sie alle versteckten Dateien entsprechend(eins nach dem anderen oder alle auf einmal), ich habe gerade verwendet die * – geben Sie ein einfaches Beispiel, aber Sie können einige haben .(dot-Dateien), die müssen auch bewegt werden. Nur stellen Sie sicher nicht zu verschieben .git-Ordner. Ich habe auch git mv statt mv zur Sicherstellung der Kompatibilität mit windows, wenn Sie mit einem windows-PC

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.