Git - nie mogę zrobić revert przez błąd scalania.

0

Witam. Od niedawna uczę się Gita i wymyśliłem sobie (chyba słusznie), że najlepiej mi wejdzie i najbardziej będzie to wszystko widoczne i jasne dla mnie, jeśli zacznę od prostych plików tekstowych. No i robię tak. W folderze na ćwiczenia otwieram terminal i wpisuję: git init. Tworzę plik tekstowy i zapisuje w nim jedno zdanie. Potem w terminalu: add nazwaPliku i commit -m 'pierwszy commit'. Następnie dopisuję jeszcze linijkę tekstu do pliku i tworzę drugi commit. Za pomocą git revert hashCommitu chcę stworzyć commit ze stanem takim jak po pierwszym zapisie i wywala mi błąd:

warning: Cannot merge binary files: plik.odt (HEAD vs. parent of 19fb8c5... dwa)
Auto-scalanie plik.odt
KONFLIKT (zawartość): Konflikt scalania w plik.odt
error: nie można odwrócić 19fb8c5... dwa

Ktoś mógłby mi podpowiedzieć co robię nie tak?

1

Ktoś mógłby mi podpowiedzieć co robię nie tak?

  1. Myslisz SVNem ;) Na 99% nie chcesz użyć revert które to tworzy kolejny commit, usuwajacy zmiany. Zwykle jednak chcesz zrobić git reset
  2. Wrzucasz do gita pliki binarne i jeszcze próbujesz je zmieniać i mergować zmiany o_O
3

Plik .odt to format dokumentów OpenOffice. Git ma na sztywno wpisane pewne rozszerzenia np. wie że pliki png to pliki binarne i nie należy ich mergować tak jak tekstu.
Zapisz plik jako .txt i będzie hulać.

Ustawienie co ma być traktowane jako text a co nie można zmienić tworząc plik .gitattributes https://git-scm.com/docs/gitattributes

EDIT: Chyba w końcu zaczynam łapać o co autorowi chodzi. Zapewne robił sobie notatki w tym samym katalogu co repo w OpenOffice i przez przypadek dodał również ten plik do repozytorium. W przeciwnym wypadku wszystko powinno działać co na szybko sprawdziłem:
screenshot-20210928075829.png

3
0xmarcin napisał(a):

Zapewne robił sobie notatki w tym samym katalogu co repo w OpenOffice i przez przypadek dodał również ten plik do repozytorium.

Nic na to nie wskazuje. Wręcz przeciwnie, wygląda na to, że OP z premedytacją próbuje wykorzystać git do snapshotowania binarnych plików. Według mnie to X/Y problem, a OP nie rozumie co to plik tekstowy:

paranoise napisał(a):

Witam. Od niedawna uczę się Gita i wymyśliłem sobie (chyba słusznie), że najlepiej mi wejdzie i najbardziej będzie to wszystko widoczne i jasne dla mnie, jeśli zacznę od prostych plików tekstowych. No i robię tak. W folderze na ćwiczenia otwieram terminal i wpisuję: git init. Tworzę plik tekstowy i zapisuje w nim jedno zdanie.

Więc może warto zacząć od tego czym różni się plik binarny od tekstowego i dlaczego ODT nie jest prostym plikiem tekstowym.

0

@Saalin: W sumie próbowałem to na pliku txt i js i wychodzi mi tak samo. Pewnie robię coś źle, ale nie wydaje mi się też żebym mylił revert z reset. Pozwoliłem sobie nagrać. Dwie minuty żeby nie było żadnych wątpliwości: https://megawrzuta.pl/download/90791a39e78d301cd245f8ea7e971b0b.html

0

https://www.atlassian.com/git/tutorials/undoing-changes/git-revert

It's im­por­tant to unde­r­stand that git re­vert undo­es a sin­gle com­mit—it do­es not "re­vert" ba­ck to the pre­vio­us sta­te of a proje­ct by re­mo­ving all su­bse­qu­ent com­mi­ts. In Git, this is ac­tu­al­ly cal­led a re­set, not a re­vert.

1 użytkowników online, w tym zalogowanych: 0, gości: 1