2015-10-07 4 views

ответ

2

Да, это возможно. Если у вас есть следующая ситуация:

a--b--c (dev) 
\ 
d--e (temp) 

команда

git merge --squash branchname 

приведет к

a--b--c--f 

где f содержит изменения, сделанные в d и e

0

Simple solution:

git rebase -i <after-this-commit> 

Squash your commits

Недавно я столкнулся с той же проблемой, у меня было 41 фиксаций по моей просьбе тянуть, см here. Я коснусь только того, что я реализовал.

Например, если у вас есть 3 фиксации, вы можете сквоить их и сделать с помощью интерактивной перестановки. Ниже команды:

$ git rebase -i HEAD~n 

Например, вы хотите, чтобы раздавить 3 фиксаций:

$ git rebase -i HEAD~3 

Теперь вы видите интерактивный интерфейс перебазироваться, где вы можете написать перефразировать/выбрать на первом фиксации и сквош на остальные из них. Посмотрите это видео для лучшего понимания.

Squashing commits video

Это легко, не займет больше времени. Я работал над этим.

Увидеть этот пост Squash my last X commits together using Git

1

Два пути

1.Это создаст новый филиал -

Шаг 1: создать новую ветвь, из которого вы создали dev филиал

git checkout master 
git branch -d new_branch 

Шаг 2: выезд в этой отрасли

git checkout new_branch 

шаг 3: merge dev с флагом -squash

git merge --squash dev 

шаг 4: addcommit и push

git add . 
git commit -m'commit message' 
git push origin new_branch 

2. Один совершить в тот же филиал (хитрый способ)

n это число фиксаций вы хотите редактировать

$ git rebase -i HEAD~n 

здесь вы можете редактировать коммиты и сдавливать их одним фиксатором

Смежные вопросы