Как переместить текущую рабочую ветвь в ведущую ветвь в 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
- совершить