Git diff mit lokalen neueren Dateien

Fremd-Buildsysteme
AudioSlyer
Erleuchteter
Erleuchteter
Beiträge: 450
Registriert: Sonntag 28. Juli 2002, 01:18

Git diff mit lokalen neueren Dateien

Beitrag von AudioSlyer »

Wie kann man denn eigentlich ein git diff erstellen mit neuen lokalen Dateien?
Gibt es da einen Trick? git diff zeigt ja nur Unterschiede von existierenden Dateien.
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: Git diff mit lokalen neueren Dateien

Beitrag von seife »

git add geänderte_datei1 gänderte_datei_2 neue_datei
git diff --cached > mein.diff
git reset HEAD .
doc
Contributor
Beiträge: 1623
Registriert: Donnerstag 10. Januar 2002, 20:03

Re: Git diff mit lokalen neueren Dateien

Beitrag von doc »

Hallo Audio,

ich habe es mal abgetrennt.
Ich verstehe noch nicht ganz was Du machen willst? Du hast Dateien in Deinem lokalen Repo verändert und willst dazu einen Diff machen? Oder direkt einen Commit fähigen Commit?
Eventuell wirst Du unter http://wiki.tuxbox-cvs.sourceforge.net/ ... _erstellen schon fündig?

Ich handhabe das eigentlich immer so.
Version 1:
Ich habe vor sowieso einen oder mehrere Patches zu erstellen um diese dann seife oder anderen zukommen zu lassen. Dazu erstelle ich mir immer einen neuen Branch (basierend auf Branch 'master'). Dies kann in anderen Projekten anders sein! Im aktuellen CST Neutrino wäre dies aktuell der Branch 'libdvbsi++'.
Dieser mit der Option -t weil Git dann weiß von welchem Punkt an (welche Eltern SHA1 ID) dieser Branch gebildet wurde. Ist für mögliches Rebasing wichtig.

Code: Alles auswählen

$ git branch -t neuer_branch_name
Branch neuer_branch_name set up to track local branch master.
Dann natürlich noch in diesen wechseln.

Code: Alles auswählen

$ git checkout !$
git checkout neuer_branch_name
Switched to branch 'neuer_branch_name'
Version 2:
Ich bin im Branch master und habe schon Veränderungen durchgeführt aber noch nicht commitet. Hier benutzt man dann 'git checkout' um einen neuen Branch zu erstellen und die Veränderungen mit zu nehmen. Die Option -b bedeutet hier 'neuer Branch'.

Code: Alles auswählen

git checkout -b neuer_name_branch
Switched to a new branch 'neuer_name_branch'
Nun kannst Du das verändern was Du willst. Und entsprechend commiten. Willst Du nun Patches erstellen zum versenden benutzt Du

Code: Alles auswählen

$ git format-patch -s master
0001-foo.patch
0002-egal.patch
Damit weiß Git das es den Branch 'master' nehmen muss als Basis wo gegen gedifft werden muss. Als Ergebnis fallen fertige nummerierte Patches heraus die verschickt werden können, wichtig ist aber das man Seinen Namen und Seine Email Adresse mit was sinnvollen versehen hat. Nicknames sind in vielen Projekten unüblich und nicht gern gesehen, auch sollte die Mailadresse real sein, schließlich könnten es ja Nachfragen von Dritten geben.
Na schönen Dank Herr Schwanke!
Ein toller Sommer! :-(
AudioSlyer
Erleuchteter
Erleuchteter
Beiträge: 450
Registriert: Sonntag 28. Juli 2002, 01:18

Re: Git diff mit lokalen neueren Dateien

Beitrag von AudioSlyer »

cool, danke für die Infos und den Beispielen