Git: fast forward aller commits eines branches aber ohne das erste parent



  • Hallo,

    ich habe folgendes Szenario:

    git init
    echo "aaa" > test
    git add test
    git commit -m "1"
    git checkout -b branch
    echo "aba" > test
    git add test
    git commit -m "2"
    git checkout master
    echo "aca" > test
    git add test
    git commit -m "3"
    git checkout branch
    git rebase master
    

    Die letzte Zeile resultiert in einen merge error. In meinem Fall sind mir die Änderungen, die in commit "3" geschehen sind aber unwichtig und ich möchte sie einfach mit den Änderungen aus "2" überschreiben.

    Kann mir jemand sagen wie ich möglichst elegant von (jetzt mit noch einem commit)

    1 -- 3
     \
      2 -- 4
    

    zu

    1 -- 3
          \
           2 -- 4
    

    komme, ohne dass das parent von "2" weiter beachtet wird (also das erste parent überschreiben)? Dies wäre gleichzusetzen mit einem checkout eines branches auf "3" und dann dort alle Änderungen einzuführen.



  • git merge -s recursive -Xours master

    $ git log --prety=oneline
    e53e66e64193af5cab085d77283f1ae3a4724356 Merge branch 'master' into branch
    5db560f869575262c7d34c9291c254fb62377b8c 4
    6e736afb343b7847a751ae0610b5fa0beadc01d9 3
    299e2477cb6c865ddda5fbb91a00a21e9c3024fb 2
    a62b865a0805cd9952eb2e0f92b9cfbba0a93b77 1



  • Das macht nicht genau das was ich haben möchte. Das erzeugt 1,2,3,4, ich würde aber gerne auch die Zeitstempel geändert haben, damit es aussieht wie wenn die Änderungen zum ersten Mal commited wurden. Das Resultat soll also 1,3,2,4 sein. Bei deinem Vorschlag wird auch ein merge-commit erstellt welchen ich auch gerne vermeiden möchte.



  • Wenn du einen echten rebase willst:

    $ git rebase -s recursive -Xtheirs master
    ...
    $ git log --pretty=oneline 
    a93e95eb919999d99a189368383e84a6b3e0c0c1 4
    1edddd887e093f2c955ece2ec90520e87ff7e7c2 2
    dc442ac1df36855c729f855206a7af812344f0ed 3
    dcf9cfd75afd71c6104d6f668225f1fac20b664c 1
    


  • Voll geil, genau das was ich gesucht habe. Super, Danke!


Anmelden zum Antworten