2013-04-02 10 views
10

Ein GIT Merge führt ein neues Commit. Dies verursacht Probleme mit "git blame": Die zusammengeführten Zeilen scheinen von dem Entwickler, der die Zusammenführung durchgeführt hat, übernommen zu werden.git Schuld: korrekte Autor nach dem Merge

Ich kann dies für widersprüchliche Änderungen (weil er die Konflikte gelöst). Aber gibt es einen Weg, dies nicht für nicht widerstreitende Linien zu tun? Eine Möglichkeit, "Schuld zuzuschieben"?

Wenn es keinen Weg gibt, würde dies "git tell" fast nutzlos machen, wenn Sie viele Zusammenführungen haben - und GIT fördert viele Zusammenführungen.

Hat SVN dieses Problem mit nicht kollidierenden Zusammenführungen? Ich glaube nicht, aber ich kann mich irren, wenn ich (verständlicherweise) Zweige wie Pest meide, wenn ich mit SVN arbeite.

+0

mögliche Duplikate von [Wie bekomme ich Schuld ohne Merges zu sehen] (http://stackoverflow.com/questions/5290094/how-do-i-git-blame-without-seering-merges) –

Antwort

8

Intern git blame verwendet git rev-list, um die Revisionsliste zu erstellen. Und git rev-list akzeptiert die --no-merges Option.

So können Sie tun:

git blame --no-merges <file> 
0

Ich habe gerade versucht, eine Zusammenführung mit git Version 2.3.8 und dem nicht merge Konflikt-Linien wurden nicht Autor der Zusammenführung verpflichten zugeschrieben, werden sie an den ursprünglichen Autor zugeschrieben. Vielleicht wurde das seit Ihrer Version von Git angesprochen.