Искусственно сделать один пункт фиксации к другому после ручного слияния?

git merge branch git-commit

56 просмотра

1 ответ

Я был в таком мерзком состоянии

после git checkout outer:

* 2df9c6b (HEAD -> outer) Ready for merging
* 161c98f Working on new stuff..
* faec47b Welcome to branch `outer`
* d2166d0 last common commit
...

после git checkout master:

* 82c6303 (HEAD -> master) Go on doing stuff
* d2166d0 last common commit
* ...

После пробежки git merge outerбез конфликтов я получил что-то вроде:

* 6ebd696 (HEAD -> master) Merge branch 'outer' into master
|\
| * 2df9c6b (outer) Ready for merging
* | 82c6303 Go on doing stuff
| * 161c98f Working on new stuff..
| * faec47b Welcome to branch `outer`
|/
* d2166d0 last common commit
...

Тем не мение. Автоматическое слияние оказалось не тем, что я на самом деле хотел получить. Итак, я побежал, git reset 82c6303 --hardчтобы начать с:

git merge outer --no-commit
... fixing stuff, merging on my own ..
git add *
git commit -m "Merged branch 'outer' into master"

Что у меня сейчас есть:

* 3d1250b (HEAD -> master) Merge branch 'outer' into master
* 82c6303 Go on doing stuff
* d2166d0 last common commit
* ...

Который: коммит 3d1250b, как я хотел, чтобы он был, но это больше не указывает на 2df9c6b. Как я могу указать на это 2df9c6b, чтобы прояснить, что произошло? Это что-нибудь значит?

Автор: iago-lito Источник Размещён: 24.10.2019 05:30

Ответы (1)


1 плюс

Решение

Поэтому, если вы не сделали что-то интересное между git merge outer --no-commitи git commit -m "Merged branch 'outer' into master", я понятия не имею, почему ваш коммит не был записан как коммит слияния (т.е. почему у него нет двух родителей). Но, если предположить , что на 3d1250bсамом деле содержит снимок , как вы хотели бы его после слияния, следующий будет делать «пустой» совершить что указывает на 3d1250bи 2df9c6b, что является «правильной» истории: git merge outer --strategy ours.

Автор: David Deutsch Размещён: 08.02.2016 06:52
Вопросы из категории :
32x32