Autor Zpráva
Jan Doležal
Profil
Ahoj, dobrý den ...

Dostal jsem na starost jeden projekt, ale zjistil jsem, že ten předmnou pushoval i data uživatelů.

Je možnost zložit nový projekt -> udělat všechny commity znovu (tohle bude hrozná práce, ikdyž jde jen o 50 commitů), ale tak, že commit neveme aktuální datum a čas, nýbrž to co mu zadám?

Děkuji, Honza.
Jan Tvrdík
Profil
Jan Doležal:
Ahoj, to, co pravděpodobně hledáš je příkaz git filter-branch. Možná by dokonce stačil i interaktivní rebase. Bez přesnějšího popisu problému ti ale nedokáži sestavený finální příkaz.
Jan Doležal
Profil
Jan Tvrdík:
Ahoj, promin, že píši tak pozdě. Jde o to, že tam jsou commity jako Add avatars, které vždy přídávají jen avatary. Dají se nějak tyto commity odstranit?
Avšak to bude mít jeden problém, jelikož už jich pár commitnul a při initial commit. :/

Proto jsem chtěl ten projekt nějak založit znovu a dělat ty úpravy a commity znovu s daným datem. Něco jako commit -m "Fix bug" -date "15.07.2012". Ale tohle je hrozná představa, otrocká práce.
Jan Tvrdík
Profil
Jan Doležal:
Hledal sis něco o tom příkazu git filter-branch? Hned první příklad v odkázané dokumentaci slouží pro smazání souboru filename ze všech commitů.
git filter-branch --index-filter 'git rm --cached --ignore-unmatch filename' HEAD


Ale na většinu věcí bude asi lepší interaktivní rebase.
Jan Doležal
Profil
Jan Tvrdík:
Takže když se vše nachází v /data/avatars/ a já potřebuji vše, včetně této složky smazat, tak použiji?:

git filter-branch --index-filter 'git rm --cached --ignore-unmatch /data/avatars' HEAD
Jan Tvrdík
Profil
Jan Doležal:
Zkusil jsi to?
Jan Doležal
Profil
Jan Tvrdík:
Ahoj. Zkusil jsem to, ale výsledek je:
Jan@JAN-NB ~/Desktop/test (master)
$ git filter-branch --index-filter 'git rm --cached --ignore-unmatch /data/arti
cles' HEAD
Rewrite 189281e1d9fab5dc382ff6c66427af4b030f70e5 (1/6)fatal: Could not switch to
 'C:/Program Files (x86)/Git/data': No such file or directory
index filter failed: git rm --cached --ignore-unmatch /data/articles
rm: cannot remove `c:/Users/Jan/Desktop/test/.git-rewrite/revs': Permission de
nied
rm: cannot remove directory `c:/Users/Jan/Desktop/test/.git-rewrite': Director
y not empty


EDIT: Ještě jsem hledal a naleze příklad:
git filter-branch --tree-filter 'rm -rf data/articles' HEAD
Tento projede commity a vymaže tuto složku.
Výsldkem pak je tento "vzhled" (bitbucket):
www.imagehosting.cz/?v=1kvk.jpg
www.imagehosting.cz/?v=2flf.jpg
Snad je to v pořádku?
Jan Tvrdík
Profil
Jan Doležal:
No such file or directory
Zřejmě nemá být na začátku cesty lomítko (git filter-branch --index-filter 'git rm --cached --ignore-unmatch data/articles' HEAD)

Permission denied
Tohle se bohužel občas na Windows stává, asi selhává nějaký zámek nebo něco. Buď se to spraví samo časem nebo spolehlivě může restart počítače.

Ještě jsem hledal a naleze příklad
To by asi taky mělo fungovat.

Snad je to v pořádku?
Tak to je snad na tobě rozhodnout, zda je výsledkem to, co jsi chtěl. Do toho ti mluvit nebudu už proto, že mi výpis z BitBucketu není úplně jasný.
Jan Doležal
Profil
[#8] Jan Tvrdík: Moc děkuji za pomoc :)

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: