Чего я хочу добиться, так это просто изменить мою ветку wip и ветку prod, а затем, при любых изменениях, я просто спрятал ее.Затем я могу создать новую ветку и вставить в нее git stash, что даст мне намного более чистую историю журнала веток.Есть ли простой способ сделать это?
Если я понимаю, вы хотите, чтобы ваша ветка wip
была на вершине prod
и имела более чистую историю.Вам не нужен тайник для этого.Вместо этого сделайте патч с git diff
и примените его к новой ветви с git apply
.
# Make a new wip branch from prod
git checkout -b new-wip prod
# Get the diff between prod and wip
git diff prod wip > wip.patch
# Apply the patch
git apply wip.patch
Затем удалите старую ветку и переименуйте новую.
git branch -D wip
git branch -m new-wip wip
Но в общем , когда вы хотите очистить историю, вы используете rebase
.Во-первых, используйте rebase
, чтобы переписать ветку wip
, чтобы все ее изменения были поверх prod
.
git checkout wip
git rebase prod
Это сгладит любые слияния или другие артефакты истории в wip
.Теперь вы как будто записали все изменения в wip
поверх самой последней версии prod
.
Затем используйте «интерактивное перебазирование», чтобы изменить ветку wip
кактебе нравится .Это может включать использование fix
и squash
для объединения нескольких изменений в одно.
# Interactively rewrite the changes since prod
git rebase -i prod
Это более общий и элегантный способ достижения вашей цели.Это позволяет вам лучше контролировать свои коммиты и историю.Вам не нужно просто смешивать все вместе, скорее вы можете быть избирательным.