Git zapobiega popychaniu po zmianie commita

Zwykle po prostu biegam

git add file
git commit
git push

Ale jeśli poprawię commit przed naciśnięciem go (z git commit --amend), następne naciśnięcie nie powiedzie się z

hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

Jak mogę pozwolić gitowi popchnąć zmiany bez łączenia gałęzi? Mam tylko jedną gałąź (master) i jestem jedyną osobą używającą tego repo więc dlaczego to mówi?

Git branch-a:

* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master

EDIT: używając gitk HEAD @{u}, widzę, że mam 2 gałęzie, jeden z oryginalnym commitem, a drugi ze zmienionym commitem.

Author: kiri, 2013-09-03

3 answers

Tak powinno być tylko wtedy, gdy zmieniasz już popchnięty commit. Generalnie nigdy nie powinieneś tego robić, ponieważ modyfikujesz opublikowaną historię. Jednak w Twoim przypadku powinieneś być w stanie uniknąć push -f, która nadpisze zdalny commit zmienioną wersją.

 46
Author: Joey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-21 13:29:57

Tak ,nie powinieneś tego robić(naciskać commit, potem go zmieniać i próbować go ponownie wcisnąć).

Zamiast tego możesz cofnąć Git do poprzedniego commita bez zmiany plików, a następnie utworzyć nowy commit:

git reset --mixed origin/master
git add .
git commit -m "This is a new commit for what I originally planned to be an amendmend"
git push origin master

Utworzy to nowy commit ze zmianami, które zamierzałeś zmienić.

 8
Author: Nils Werner,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-08 09:18:06

Zmieniłeś wyciągnięty commit jak w

git pull origin master
git commit -a --amend -m "..."
git push

Możesz rozwiązać problem przywracając zmieniony commit:

git reset --mixed origin/master

, a następnie dokonując go ponownie jako pełnoprawny commit

 7
Author: Stefano Falasca,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-03 09:44:28