Re: git commit --amend
От: mbait  
Дата: 10.11.18 04:02
Оценка: 3 (1) +6
Здравствуйте, Artem Korneev, Вы писали:

AK>Коллеги, а подскажите, есть ли какой-нибудь тайный индейский способ не путать, когда нужно делать git commit, а когда git commit --amend?


AK>Иногда по ошибке делаю commit и оно создает новую запись в списке коммитов вместо того чтоб обновить текущую. Или делаю наоборот и тогда оно сливает мое изменение с предыдущим, от другого человека.

AK>Есть ли какой-нибудь простой способ сделать чтоб оно создавало новую запись только если сейчас нет текущей, которая еще не была смержена в основную ветку?
AK>Не то чтоб прям это часто случалось, но все равно надоедает. Пару раз в полгода приходится вручную перекидывать все в staging и пересоздавать коммит.

Я, когда работаю в личной ветке, комичу всё без разбора, стараясь делать логически атомарные записи. Когда подходит к концу работы просто выполняю git rebase -i и всё подчищаю. Очень удобно совмещать с git commit --fixup, тогда при должных настройках все коммиты с --fixup перемещаются в нужные позиции.

Очень рекоменду прочитать Pro Git.
Re: git commit --amend
От: bnk СССР http://unmanagedvisio.com/
Дата: 09.11.18 20:19
Оценка: +2 :))
Здравствуйте, Artem Korneev, Вы писали:

AK>Коллеги, а подскажите, есть ли какой-нибудь тайный индейский способ не путать, когда нужно делать git commit, а когда git commit --amend?


AFAIK, нет такого. IMHO, достаточно просто осознавать, что делаешь. Не коммитить подшофе, то есть
Отредактировано 09.11.2018 20:20 bnk . Предыдущая версия .
Re: git commit --amend
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 09.11.18 20:03
Оценка: 7 (2) +1
Здравствуйте, Artem Korneev, Вы писали:

AK>Иногда по ошибке делаю commit и оно создает новую запись в списке коммитов вместо того чтоб обновить текущую. Или делаю наоборот и тогда оно сливает мое изменение с предыдущим, от другого человека.

AK>Есть ли какой-нибудь простой способ сделать чтоб оно создавало новую запись только если сейчас нет текущей, которая еще не была смержена в основную ветку?
AK>Не то чтоб прям это часто случалось, но все равно надоедает. Пару раз в полгода приходится вручную перекидывать все в staging и пересоздавать коммит.

Эээ...
Зачем куда-то что-то перекидывать?

Если речь о случайном amend вместо нового коммита, то git reflog показывает id коммита перед ошибкой, его можно сразу вытащить обратно. (Удобнее всего через git checkout -B $current_branch $commit_id.)
Сразу замечу к слову — git reflog по умолчанию показывает однострочно, но через git reflog --pretty=short, git reflog -p и т.д. — можно менять показ на нужный (аналогично git log).

Если наоборот, то через interactive rebase и подкоманды squash/fixup такой случайно отдельный коммит объединяется с предшественником.

По исходному вопросу — штатно такого не знаю, но написать алиас или даже отдельную команду, которая анализирует ситуацию, и выбирает действие — должно быть достаточно просто.
Думаю, никто этим не заботится именно потому, что восстановление тривиально.
The God is real, unless declared integer.
Отредактировано 10.11.2018 7:30 netch80 . Предыдущая версия . Еще …
Отредактировано 10.11.2018 7:27 netch80 . Предыдущая версия .
Re[2]: git commit --amend
От: mbait  
Дата: 10.11.18 03:59
Оценка: 5 (2)
Здравствуйте, Don Reba, Вы писали:

DR>Здравствуйте, Artem Korneev, Вы писали:


AK>>Коллеги, а подскажите, есть ли какой-нибудь тайный индейский способ не путать, когда нужно делать git commit, а когда git commit --amend?


AK>>Иногда по ошибке делаю commit и оно создает новую запись в списке коммитов вместо того чтоб обновить текущую. Или делаю наоборот и тогда оно сливает мое изменение с предыдущим, от другого человека.

AK>>Есть ли какой-нибудь простой способ сделать чтоб оно создавало новую запись только если сейчас нет текущей, которая еще не была смержена в основную ветку?
AK>>Не то чтоб прям это часто случалось, но все равно надоедает. Пару раз в полгода приходится вручную перекидывать все в staging и пересоздавать коммит.

DR>--amend нужен для исправления ошибки в предыдущем коммите. Для нового изменения всегда надо заводить новый.


Для исправления ошибок есть --fixup, а --amend для добавления забытого.
Re: git commit --amend
От: Don Reba Канада https://stackoverflow.com/users/49329/don-reba
Дата: 10.11.18 02:50
Оценка: 3 (1)
Здравствуйте, Artem Korneev, Вы писали:

AK>Коллеги, а подскажите, есть ли какой-нибудь тайный индейский способ не путать, когда нужно делать git commit, а когда git commit --amend?


AK>Иногда по ошибке делаю commit и оно создает новую запись в списке коммитов вместо того чтоб обновить текущую. Или делаю наоборот и тогда оно сливает мое изменение с предыдущим, от другого человека.

AK>Есть ли какой-нибудь простой способ сделать чтоб оно создавало новую запись только если сейчас нет текущей, которая еще не была смержена в основную ветку?
AK>Не то чтоб прям это часто случалось, но все равно надоедает. Пару раз в полгода приходится вручную перекидывать все в staging и пересоздавать коммит.

--amend нужен для исправления ошибки в предыдущем коммите. Для нового изменения всегда надо заводить новый.
Ce n'est que pour vous dire ce que je vous dis.
Отредактировано 10.11.2018 2:58 Don Reba . Предыдущая версия .
Re[4]: git commit --amend
От: mbait  
Дата: 10.11.18 22:53
Оценка: +1
Здравствуйте, Don Reba, Вы писали:

DR>Здравствуйте, mbait, Вы писали:


DR>>>--amend нужен для исправления ошибки в предыдущем коммите. Для нового изменения всегда надо заводить новый.


M>>Для исправления ошибок есть --fixup, а --amend для добавления забытого.


DR>Amend используется для исправления предыдущего коммита или более старого через interactive rebase. Fixup/autosquash — это просто альтернативный процесс для тех, кто старые коммиты правит часто.


Я хотел сказать, что --fixup получается ближе к тому, что хочет ТС, потому что не затирает HEAD и позволяет "опомниться"

Иногда по ошибке делаю commit и оно создает новую запись в списке коммитов вместо того чтоб обновить текущую. Или делаю наоборот и тогда оно сливает мое изменение с предыдущим, от другого человека.
Есть ли какой-нибудь простой способ сделать чтоб оно создавало новую запись только если сейчас нет текущей, которая еще не была смержена в основную ветку?

git commit --amend
От: Artem Korneev США https://www.linkedin.com/in/artemkorneev/
Дата: 09.11.18 19:57
Оценка:
Коллеги, а подскажите, есть ли какой-нибудь тайный индейский способ не путать, когда нужно делать git commit, а когда git commit --amend?

Иногда по ошибке делаю commit и оно создает новую запись в списке коммитов вместо того чтоб обновить текущую. Или делаю наоборот и тогда оно сливает мое изменение с предыдущим, от другого человека.
Есть ли какой-нибудь простой способ сделать чтоб оно создавало новую запись только если сейчас нет текущей, которая еще не была смержена в основную ветку?
Не то чтоб прям это часто случалось, но все равно надоедает. Пару раз в полгода приходится вручную перекидывать все в staging и пересоздавать коммит.
С уважением, Artem Korneev.
Отредактировано 09.11.2018 19:58 Artem Korneev . Предыдущая версия .
Re[3]: git commit --amend
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 10.11.18 07:06
Оценка:
Здравствуйте, mbait, Вы писали:

AK>>>Не то чтоб прям это часто случалось, но все равно надоедает. Пару раз в полгода приходится вручную перекидывать все в staging и пересоздавать коммит.

DR>>--amend нужен для исправления ошибки в предыдущем коммите. Для нового изменения всегда надо заводить новый.
M>Для исправления ошибок есть --fixup, а --amend для добавления забытого.

Никакой разницы, если они потом всё равно будут прилиты в базовый коммит для этой правки.
Но --fixup требует отдельного rebase-прохода, что не нужно, если уверен, что можно долить в предыдущий.
The God is real, unless declared integer.
Re[2]: git commit --amend
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 10.11.18 07:33
Оценка:
Здравствуйте, bnk, Вы писали:

AK>>Коллеги, а подскажите, есть ли какой-нибудь тайный индейский способ не путать, когда нужно делать git commit, а когда git commit --amend?


bnk>AFAIK, нет такого. IMHO, достаточно просто осознавать, что делаешь. Не коммитить подшофе, то есть


Я пьяным не работаю, но ошибки такого рода периодически случаются. Просто надо не пугаться и помнить, что вся история таких промежуточных движений хранится последние несколько дней.
The God is real, unless declared integer.
Re[3]: git commit --amend
От: aik Австралия  
Дата: 10.11.18 09:21
Оценка:
Здравствуйте, netch80, Вы писали:

N>вся история таких промежуточных движений хранится последние несколько дней.


Это только если сборщик мусора включён (а я сам запускаю "git gc" по большим праздникам), а так то куда оно денется?
Re[4]: git commit --amend
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 10.11.18 11:00
Оценка:
Здравствуйте, aik, Вы писали:

aik>Здравствуйте, netch80, Вы писали:


N>>вся история таких промежуточных движений хранится последние несколько дней.


aik>Это только если сборщик мусора включён (а я сам запускаю "git gc" по большим праздникам), а так то куда оно денется?


Подразумевался режим по умолчанию (30 суток на expire-unreachable). Конечно, настройки тут можно выкрутить в любую сторону...

git gc запускается с --auto на много операций, и оно может само решать "а тут у вас таки накопилось, давайте проведём GC".
The God is real, unless declared integer.
Re[5]: git commit --amend
От: aik Австралия  
Дата: 10.11.18 11:10
Оценка:
Здравствуйте, netch80, Вы писали:

N>Подразумевался режим по умолчанию (30 суток на expire-unreachable). Конечно, настройки тут можно выкрутить в любую сторону...


Ну, я имел ввиду что "тайный индейский способ" — это выключить автоматический gc к чертям, и восстанавливаться через git reflog, который ничего не забудет.
Re[6]: git commit --amend
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 10.11.18 11:13
Оценка:
Здравствуйте, aik, Вы писали:

aik>Здравствуйте, netch80, Вы писали:


N>>Подразумевался режим по умолчанию (30 суток на expire-unreachable). Конечно, настройки тут можно выкрутить в любую сторону...


aik>Ну, я имел ввиду что "тайный индейский способ" — это выключить автоматический gc к чертям, и восстанавливаться через git reflog, который ничего не забудет.


OK, только я слабо представляю себе того, кому надо восстанавливаться через reflog более чем через 30 дней... на практике это и так откровенно дофига, можно из отпуска успеть вернуться.
The God is real, unless declared integer.
Re[3]: git commit --amend
От: Don Reba Канада https://stackoverflow.com/users/49329/don-reba
Дата: 10.11.18 11:36
Оценка:
Здравствуйте, mbait, Вы писали:

DR>>--amend нужен для исправления ошибки в предыдущем коммите. Для нового изменения всегда надо заводить новый.


M>Для исправления ошибок есть --fixup, а --amend для добавления забытого.


Amend используется для исправления предыдущего коммита или более старого через interactive rebase. Fixup/autosquash — это просто альтернативный процесс для тех, кто старые коммиты правит часто.
Ce n'est que pour vous dire ce que je vous dis.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.