Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Git - Dziwne komentarze

Ostatnio zmodyfikowano 2024-10-24 13:33
Autor Wiadomość
tBane
Temat założony przez niniejszego użytkownika
Git - Dziwne komentarze
» 2024-10-22 13:12:35
Witam. Mam problem z Gitem. Po uploadowaniu repozytorium Git dodał mi jakieś dziwne komentarze w całym projekcie:

enum class buildingEditorStates { start, editor };
buildingEditorStates buildingEditorState;
<<<<<<< HEAD
Terrain* terrain;
Floors* floors;
=======
>>>>>>> 0d92efa (Main Updates:)

void BuildingEditor() {

    window->setTitle("Building Editor");

>>>>>>> 0d92efa (Main Updates:)

<<<<<<< HEAD
    sf::Event event;
    while (window->waitEvent(event)) {
        if (event.type == sf::Event::KeyPressed && sf::Keyboard::isKeyPressed(sf::Keyboard::Space)) {
            break;
        }

Czym to moze być spowodowane i jak to cofnąć ?

P-181735
DejaVu
» 2024-10-22 15:45:29
Najłatwiejsze rozwiązanie:
1. Utwórz nowy katalog
2. Pobierz repozytorium ponownie (NIE KASUJ STAREGO KATALOGU)
3. Jeżeli wszystko działa poprawnie w nowym katalogu do którego pobrałeś repozytorium, to możesz przełączyć się z developmentem na ten nowo pobrany katalog.

Jeżeli wiesz co robisz i jesteś pewien, że nie masz żadnych lokalnych zmian do wcommitowania, to można użyć:
git reset --hard HEAD
ZANIM UŻYJESZ tego polecenia, przeczytaj dokładnie co ono robi, abyś nie stracił lokalnych zmian:
https://graphite.dev/guides/how-to-use-git-reset-hard-head
P-181739
jankowalski25
» 2024-10-24 13:33:42
Nie ma czegoś takiego jak 'usunąć wybrane commity, ale nie usuwać plików'.
Owszem, jest, nazywa się "rebase".
git rebase -i HEAD~liczba_commitow

Przykładowo: używając HEAD~5, zrobisz rebase na ostatnich pięciu commitach.

Generalnie, git ma co najmniej dwie historie: jedna to jest ta klasyczna, którą znają wszyscy. Druga, to jest "historia historii" o nazwie "reflog":
git reflog

Stamtąd można cofać wszelkie zmiany tak długo, jak długo istnieją lokalnie. Zmiany w reflogu nie ulegają kopiowaniu przy wywołaniu git clone. Generalnie, reflog służy do tego, żeby cofnąć się do absolutnie dowolnego stanu repozytorium, tak długo, jak długo nie skasujesz lokalnej wersji.

Dobra już wszystko zepsułem przez ChataGPT xD
Jeśli nie zniszczyłeś lokalnej wersji, to reflog z pewnością ma stan, w którym wszystko było prawidłowe, zanim zostało zepsute.

Bo czasem wrzucałem mały commit i słabo to wyglądało.
Jeśli używasz rebase'a, no to wtedy komenda "squash" łączy zmiany z dwóch commitów w jeden. Ewentualnie, jeśli zmiany są na szczycie, to ja zwykle po prostu dopisuję wszystko do ostatniego commita.
git reset --soft HEAD~liczba_commitow

To jest tak zwany "miękki reset", który powoduje tyle, że cofasz się w historii o tyle commitów, ile podasz, no i potem możesz zgarnąć wszystkie takie zmiany w jeden commit. Jest też "twardy reset", który po prostu wywala commity w powietrze i różni się tym, że zamiast słowa "soft" wstawiasz po prostu "hard".

Jeżeli nie chce działać edytor
Warto zauważyć, że zwykle masz wprost podaną przyczynę, dlaczego coś nie działa i przeczytanie komunikatu błędu wiele tutaj ułatwia. Na przykład, jak masz konflikty, to wprost masz podane pliki, w których to występuje. Ba, nawet te "dziwne strzałki" zaznaczają dokładnie, które linijki się nie zgadzają.

czy można przywrócić stan projektu do wybranego commita ?
Na twardo? No to tak:
git reset --hard hash_commita


Nawiasem mówiąc, polecam poczytać jakąś książkę o gicie: https://goalkicker.com/GitBook/

Dopisano:
Dodam więcej: polecam założyć sobie jakieś małe, osobne repozytorium, przeznaczone tylko i wyłącznie do eksperymentów z gitem. Wstawiasz tam sobie jakiś plik tekstowy typu "ala ma kota", dopisujesz zmiany, masz dwa commity, próbujesz je połączyć, rozdzielić, zamienić, poprzestawiać gałęzie i zrobić wszelkie inne sztuczki, których chcesz się nauczyć. A jak się z tym oswoisz, to dopiero wtedy warto ruszać właściwe repo.
P-181750
« 1 »
  Strona 1 z 1