2015-11-09 5 views
3

Скажем, у меня есть существующая ветка B (если она имеет значение, она удалена).Как сделать ветку B точно так же, как ветку A?

У меня также есть ветка A (локальная или удаленная). Я бы хотел, чтобы ветвь B была точно такой же, как A. Если я правильно понял, слияние не делает ветки одинаковыми, в ветке B все еще может быть что-то не на ветке A, и она останется там после выполнения git checkout B, а затем git merge A. Правильно ли я понимаю?

Конечно, я могу просто удалить ветвь B и создать новую ветку B от A. Это лучший способ?

примечание только для уточнения: я хочу сохранить ветвь B живым из-за конфигурации развертывания. Если я удалю и воссоздаю, мне нужно будет сделать другое дело вручную для развертывания.

ответ

4

git отслеживает история развития. Таким образом, чтобы сделать ветку так же, как другой ветви, вам просто нужно:

git checkout <branch B> 
git reset --hard <branch A> 
git push --force origin <branch B> 

Конечно, делая это, вы потеряете историю развития, которая была на ветви В.

0

Вы, конечно, можете это сделать, но ты действительно хочешь? Если B отдаленная это также означает, что кто-то, возможно, он проверил и перезапись будет запутанным, в лучшем случае, для них ...

Во всяком случае

git checkout B  # get B 
git reset --hard A # change B to be exactly like A 
git push --force  # push B to remote, use --force to overwrite B (not normally allowed) 
0

Похоже, вы просто хотите переименовать branchB.

git branch -m branchB new_name_for_branchB 
git branch branchA branchB 

Теперь new_name_for_branchB относится к тому же совершить что branchB привыкли, и branchB относится теперь к тому же, как совершить branchA. Однако две ветви А и В все еще различны.

0

git reset --hard, как описано другими, будет синхронизироваться с вашей локальной веткой A на (удаленную) ветвь B всякий раз, когда вы ее запускаете.

Если ветка (удаленная) - это «живая ветвь» (то есть люди (возможно, другие люди, чем вы, возможно, из нескольких локальных/хостов/...) совершают ее), она будет развиваться с течением времени. Чтобы ваш филиал «проследил» удаленный филиал через новые изменения, вы можете настроить его как отслеживание.

git branch --set-upstream A origin/B 

тогда, когда вы pull от удаленного origin, он будет (пытаться) синхронизировать локальную копию A.

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