Связанные ветки в Git

Когда я использовал gitk для проверки своих веток, я обнаружил следующее:

Git связанные веток

я создал pretty_url, переключился на него, работал на вещи, совершил, затем переключился на master ветка (которая была чистой), затем побежал git merge pretty_urlи проверил с gitkи нашел это.

Я уверен, что это не правильно и, вероятно, master не был чистым Как я могу это исправить?

2 ответа

Решение

Это именно то, что вы должны ожидать от слияния. Если вы хотите сделать перебаз и перемотать вперед, вы могли бы сделать это вместо этого и иметь прямую линию.

Пример:

До слияния у вас была такая ситуация:

перед картинкой

То есть история master а также branch расходились. Они делят h как общий предок. При слиянии (через git merge branch в то время как на `master) вы получаете коммит с двумя родителями для объединения этой истории:

объединить фото

Если это не то, что вы хотели, вы можете отменить это и получить то, что вы хотели, сделав что-то вроде:

git reset --hard HEAD@{1}  # or whatever commit matches 'j' to undo the merge
git checkout branch
git rebase master          # incorporate 'i' and 'j' commits into 'branch'
git checkout master
git merge branch           # this merge will be a fast-forward now

Что даст вам перебазированную линейную историю, которую вы, похоже, ищете:

пиктограмма fastforward

Красная линия не указывает на нечистую ветвь; это просто означает, что предыдущий коммит в master старше чем pretty_urlголова Не нужно беспокоиться здесь. Более того, git merge не работает на нечистых деревьях.

Другие вопросы по тегам