Оформить заказ и использовать git cherry-pick -e <sha>
, где <sha>
- ссылка на каждую регистрацию в frontend
, которую вы хотите добавить к master
. Таким образом, вы бы сначала использовали git cherry-pick -e <sha of 'adding delay'>
. Вы можете выбрать вишню в любом порядке, в котором вы хотите, чтобы вы могли организовать нужные вам чекины от frontend
в другом порядке до master
. Смотри http://technosophos.com/content/git-cherry-picking-move-small-code-patches-across-branches.
Альтернативой является перебазирование, но это может быть немного более запутанным, чем использование cherry-pick, если вы не используете механизм. Я предлагаю вам сначала поэкспериментировать с этим подходом на клоне вашего репо. Вы всегда можете отменить то, что я говорю, но вы не хотите тратить свое время на то, чтобы понять, как это сделать, если у вас уже мало времени.
Сначала оформите frontend
, а затем создайте новую ветку tmp
(потому что вы не хотите фактически удалять интерфейс).
Тогда сделайте git rebase -i --onto master master tmp
. Это вызовет редактор для удаления и реорганизации проверок, которые будут отправлены после основной проверки, в любом порядке, который вы хотите видеть в своей ветке внешнего интерфейса.
Когда вы закончите с этим, tmp
будет там, где вы хотите, чтобы мастер, поэтому проверьте master
и сделайте git reset --hard tmp
и удалите ветвь tmp
git branch -d tmp
.
Книга Pro Git содержит хорошую информацию о ребазе, но я применил эти концепции к вашему варианту использования. http://progit.org/book/ch3-6.html
Сначала убедитесь, что перечисленные массовые изменения действительно являются дубликатами. Вы можете сделать git diff <sha of bulk1> <sha of bulk2>
, чтобы увидеть различия. Если это то же самое или нет, ключом к удалению этого из списка является удаление вашего тайника, который вы в какой-то момент дали git. Если это не дубликат, убедитесь, что вы решили, что делать с различиями, прежде чем просто удалить тайник.
Находясь в ветке, сделайте git stash pop
, и если вы действительно не хотите, что вы сохранили в stash, сделайте git reset --hard HEAD
. В этот момент, если вы перезапустите ваш gitk (обновление не будет показывать это), вы увидите, что эти записи в верхнем левом углу удалены. Ваш график gitk показывает, что тайник был проиндексирован с master, так что именно здесь я буду работать с stash, но вы лучше знаете, в какой ветке master
или frontend
, возможно, вы захотите работать с ним.
Вы также можете просто использовать git stash pop
и отправить изменения, которые вы сохраняете, и они исчезнут. Единственная причина, по которой в вашем gitk есть история веток, - показать, как git знает, как воссоздать различия в тайнике. После того, как вы откроете этот тайник, он забудет о любом происхождении тайника, это все равно что сдвинуть тайник туда, куда вы его засовали.
@ У Джефроми есть более понятный подход к удалению тайника, если вам ничего от него не нужно, это не его точные слова, а то, что он предлагает:
Используйте git stash clear
, чтобы удалить все тайники. Вы можете использовать git stash drop stash@{n}
, чтобы просто уронить его. Используйте git stash list
, чтобы увидеть, каким должно быть n.