Как переместить текущую рабочую ветвь в ведущую ветвь в git

В настоящее время я один из проектов, в котором есть больше веток. master branch еще не слияние долгое время. Поэтому я хочу переключиться на мастер с последним кодом.

Можете ли вы дать мне необходимые команды и шаги.

Позвольте мне переформулировать мой вопрос.

Я работаю в проекте с разными ветвями. Последние изменения были в какой-то ветки, кроме мастера. Теперь мое требование: есть ли способ переместить текущую рабочую ветвь в мастер, без слияния с мастером, чтобы избежать конфликтов?

Ответ 1

Если вы хотите, чтобы в master было то же самое состояние файлов, что и в other_branch, и сохраняйте историю - сделайте следующее (и отметьте точку в конце):

git checkout master
git checkout other_branch .

Теперь у вас будет полная копия other_branch в текущем мастере (она мягче, чем reset), еще не зафиксированная. Затем сделайте регулярный коммит:

git add --all
git commit -m "* copy other_branch to master working tree"

Примечание: неотслеживаемые (неиндексированные) файлы (каталоги) из other_branch остаются, если они не отслеживаются мастером. Чтобы удалить эти неотслеживаемые файлы (каталоги):

git clean -fd

См. Как удалить локальные (неотслеживаемые) файлы из текущего рабочего дерева Git? Больше подробностей.

Ответ 2

Вы хотите объединить ветвь 'develop' в master?

git checkout master
git merge develop

Или вы хотите объединить изменения с мастером в свою ветку разработки?

git checkout develop
git merge master

Ответ 3

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

git reset --merge

Однако, если вы просто хотите сделать свой текущий master таким же, как и ваш другой ветвь, вы можете сделать это с помощью

git checkout master
git reset --hard other-branch

Однако, как правило, это плохая идея, поскольку:

  • Вы отбрасываете всю работу в своей мастер-ветке. Возможно, вам понадобится эта история позже? (Вы всегда можете "создать резервную копию" своей основной ветки с помощью git branch old-master master.)
  • Вы переписываете историю ветки master, поэтому, если вы когда-либо делили эту ветку с кем-то, результаты будут запутывать для вас обоих.
  • git reset --hard всегда следует использовать с осторожностью, так как он отбросит все незафиксированные изменения, которые у вас есть.

Ответ 4

Если я правильно понимаю ваш английский, вы не хотите объединять свои изменения обратно в master, но просто reset master, чтобы указать на последнюю фиксацию в вашей текущей проверенной ветке? Для этого используйте:

git branch -f master

Ответ 5

вам нужно объединить текущую ветку в главную ветку. как я это делаю:

1) git fetch origin  # get all branches from server  
2) git rebase master # update your local master to the origin master, in case master has changed upstream
3) git checkout <branch>  # go to your branch
4) git rebase master # rebase your branch to master; applies your branch changes ontop of the master, where it diverged
5) git checkout master # go back to master
6) git merge <branch> # merge your branch into master.  since you rebased, this should be trivial
7) git push # push your master upstream

Ответ 6

Если вы хотите взять некоторые коммиты от branch до master, вы можете использовать вишневый выбор.

Это принимает только определенные коммиты от branch до master, но is – конечно, ndash; не гарантируется отсутствие конфликтов.

Посмотрите мой ответ на Управление исправлениями при разработке ветки сильно отличается от мастера?

Однако, если вы хотите принять все, заработайте с branch в master, вы не сможете объединять и разрешать конфликты (если вы не git reset --hard other-branch ветвь master как описанный – и обескураженный Mark).

Ответ 7

Если вы хотите объединить рабочую ветвь в мастер, вы также можете использовать rebase, который немного чище.

git checkout master
git rebase <working branch>

Ответ 8

Если вы хотите скопировать файлы из ветки в master, выполните следующие команды.

  • git мастер проверки
  • git checkout branch_from_which_you_have_to_copy_the_files_to_master.

    (с периодом)

  • git add --all

  • git push -u origin master

  • git commit -m "копировать из ветки в master"

Ответ 9

Возможно, это не так чисто, но это работает для меня

  • git pull #, чтобы получить все изменения
  • перейти на my_branch
  • копировать все файлы tmp dir
  • переключиться на мастер
  • удалить все файлы в главном
  • копировать файлы из tmp dir
  • совершить