2012-05-08 2 views
1

У меня есть новая линия работы, которую я хочу стать мастером. Он слишком сильно расходится с мастером для слияния или переустановки (хотя я вручную портировал функциональность). Я понимаю, что могу легко сделать git branch -D master; git checkout new-master; git checkout -b master, но я не хочу испортить вилки.Сделайте новую ветку мастером в git, не испортив существующие вилки

В идеале я хотел бы ввести фиксацию, которая превращает текущий мастер в состояние, в котором я могу применить свои изменения из своей новой ветки, так что любой, у кого есть вилка, может только git pull origin master и git без инцидентов.

Возможно ли это?

ответ

1

Если вы просто хотите филиала master сослаться на новое обязательстве которого содержания идентично расшириться branch, с дельтой между master^ и master будучи «изменить все, чтобы соответствовать содержимому ветви branch», это довольно легко:

$ git checkout branch 
$ git symbolic-ref HEAD refs/heads/master 
$ git status # you'll see what you're about to commit, here 
$ git commit # make that new commit 

Обратите внимание, что история филиал для master будет не см branch здесь.

Если вы хотите совершить, чтобы выглядеть как слияние, которая меняет все на пути branch внешность, это, кажется, сделать трюк, но я не проверял это хорошо:

$ git checkout master 
$ git merge --no-commit -s ours branch # this sets up the merge 
$ git rm -r .       # this empties it out 
$ git checkout branch -- .    # this adds everything from branch 
$ git status # again, just to see what you're about to commit 
$ git commit # and maybe edit the message to note that you took "branch" 

Теперь master^ является то, что мастер имел обыкновение выглядеть так и master^2 является концом branch.

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