Как git -коммитить с ветки на отдельную HEAD? - PullRequest
0 голосов
/ 28 апреля 2020

My ref HEAD указывает ветку foo, которая указывает на коммит 123abc; и у меня есть некоторые поэтапные работы.

Как git commit работать, перемещая HEAD во вновь созданный коммит, но без продвижения ветки ?

(следовательно: оставляя foo указывать на 123abc)

Возможно ли сделать это с помощью одной git команды?

Ответы [ 3 ]

2 голосов
/ 28 апреля 2020

Просто отсоедините, затем подтвердите:

git checkout --detach
git commit -m "Commit as usual"
1 голос
/ 28 апреля 2020

Если HEAD напрямую указывает на фиксацию 123abc, он уже находится в состоянии отсоединенного HEAD вместо foo. git commit создаст новый коммит и переместит HEAD в новый коммит, оставив foo неподвижным.

Если HEAD указывает на refs/heads/foo и refs/heads/foo указывает на 123abc, вы может запустить git checkout 123abc и затем сделать коммит.

0 голосов
/ 28 апреля 2020

Вы можете просто зафиксировать, а затем выполнить сброс:

# from foo branch
git commit -m 'your work here'
git reset --soft HEAD~1

Это переместит указатель HEAD на один коммит обратно на 123abc, но также запустит всю работу в этом коммите.

Существуют другие типы сброса (смешанный, жесткий), которые делают варианты выше. Не зная вашей конечной цели, не ясно, какой тип сброса вы должны использовать. Тем не менее, в целом, перемещение HEAD назад на один коммит - это то, что вы бы сделали, если хотите переписать предыдущий коммит HEAD.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...