2009-05-22 7 views
10

Wenn ich auf meine Entwicklung Zweig folgende Datei hatte:Wie „split“ Dateien mit git

# file.rb 

class Code 
def methodA 
    'aA1' 
end 
def methodB 
    'bB2' 
end 
end 

aber auf meinem Master Zweig wollte ich die Methoden in verschiedene Dateien trennen:

# in file.rb 
class Code 
    def methodA 
    'aA1' 
    end 
end 

# in extra.rb 
class Code 
    def methodB 
    'bB2' 
    end 
end 

ich einfach die Datei auf Entwicklung schaffen könnte, Check-out dann auf Master, rebase und getrennt t er Datei manuell, aber ist es möglich, Dinge einzurichten, so dass, wenn ich Änderungen an Entwicklung es würde über die richtige "Teil" der Datei auf Master?

+0

Vielleicht in der Zukunft, wenn "Schuld" Merge Strategie/Merge-Treiber wird implementiert ... –

Antwort

4

Wenn ein Split "nach rechts übertragen" wird, bedeutet das, dass Git den Split erkennen kann.

Und wie dies veranschaulicht recent thread (in diesem Monat Mai 2009), ist Git noch nicht ganz da.
Das könnte für große Dateien mit einem kleinen Teil in es in eine andere Datei aufgeteilt funktionieren, aber für kleine Dateien, erscheint der Inhalt "zu unterschiedlich" für git Umbenennung Detektor, um die Änderungen aufzunehmen.

So rebase 'master' oben auf 'development' funktionieren könnte, sofern Sie nicht veröffentlichen (push) 'master', da 'development' gemacht wurde, weil eine solche Operation (rebase) wird neu schreiben die SHA-1 der begeht auf ‚master‘ Zweig (da sie auf dem Commits des ‚development‘ Zweig wiedergegeben werden)

Wie ich in rebase vs.merge beschrieben, wenn Ihr Entwicklungszweig ist nicht „zu weit“ (in der Bezeichnung der Änderungen von Master , eine andere Strategie wäre, die Entwicklung auf den Master zu verschieben, den Split zu machen und dann die Entwicklung wieder mit dem Master zu verbinden (Schnellvorlauf) Merge an diesem Punkt)

+1

Dieser Beitrag ist 7 Jahre alt, gab es in letzter Zeit irgendwelche Verbesserungen? –

+0

@StrategyThinker Für so eine kleine Datei glaube ich nicht. – VonC