Nein,
stg commit ändert nicht den Hashwert, das sagt dir nur, dass der unterste Commit, den stg verwaltet, jetzt nicht mehr mit stg verwaltet werden soll.
Also z.B.
mkdir -p /tmp/raubtiergit && cd /tmp/raubtiergit
git init
touch a ; git add a ; git commit -a -m "test1"
touch b ; git add b ; git commit -a -m "anderer test"
touch c ; git add c ; git commit -a -m "foobar"
stg init
stg uncommit -n 2
Du bekommst jetzt als Ausgabe von
stg series (Achtung: die Patches werden von alt nach neu ausgegeben, umgekehrt zu git log):
/tmp/raubtiergit(master|✔) % stg series
+ anderer-test
> foobar
Die beiden letzten Patches sind also nun unter der Verwaltung von stg. Mit z.B. gitg oder gitk kannst du aber leicht sehen, dass beide Patches auch im "normalen" git da sind. Der Hashwert ändert sich, wenn du z.B. mit stg pop anderer-test einen Commit aus der Mitte wegnimmst:
/tmp/raubtiergit(master|✔) % git log --oneline
7e607ee foobar
45b9446 anderer test
04b154e test1
/tmp/raubtiergit(master|✔) % stg pop anderer-test
Popped foobar -- anderer-test
Pushing patch "foobar" ... done
/tmp/raubtiergit(master|✔) % git log --oneline
b94d522 foobar
04b154e test1
Oder natürlich wenn du mit
stg edit oder mit
stg refresh einen Patch bearbeitest.
Der Zeitstempel: Nun, probiere es doch einfach mal aus!
stg edit zeigt dir auch den Zeitstempel an - du kannst ihn nach deinen Wünschen bearbeiten!
Ach so, noch eins: den allerersten Patch kannst du mit stg nicht ändern.
D.h. ich würde das hier machen:
cd dein_git_verzeichnis
stg init
stg uncommit -n $[-1+`git rev-list HEAD --count`]
stg pop -a
echo "Jetzt den allerersten Commit ändern (Spezialfall)"
git commit --amend
stg push -a
... und dann solange folgendes Kommando wiederholen, bis fertig:
stg edit `stg series | head -n1 | awk '{print $2}'` && stg commit
Hat den großen Vorteil, dass du immer mal ganz schnell eine Commit-Message änden kannst. Und mit
stg series | wc -l siehst du dann, wie viele noch verbleiben...
Last edited: 2014-02-10 22:24:59 +0100 (CET)