Git: сделать одну ветку точно такой же, как другую - PullRequest
2 голосов
/ 23 апреля 2010

Я относительно новичок в Git, и мне все еще не очень удобно с ним. Сейчас я ищу команду / options / magic, которая может сделать текущую ветку похожей на другую; то есть объединять их, но когда возникает конфликт, всегда выбирать различие в ветви, которая объединяется с текущей.

Моя ситуация такова; У меня стабильное (ish) приложение в ветке "master". У меня также есть еще одна ветка, которая называется "особенность". Я в основном хочу внести изменения / добавления / удаления в функцию, пока мне не понравится новая функция, над которой я работаю. Как только я почувствую, что он готов, я хочу, чтобы основная ветвь выглядела так же, как ветвь функций.

Я знаю, что это, вероятно, не лучшая практика, но, как я уже сказал, я новичок в Git. Я планирую научиться делать более сложные вещи в будущем, но пока это все, что мне нужно.

Спасибо, ТАК!

Ответы [ 4 ]

4 голосов
/ 03 декабря 2014

Я знаю, что об этом недавно спросили, и уже есть несколько ответов, но я подумал, что предложу свои 2 цента:

Если вы хотите сделать git merge и не хотите беспокоиться о конфликтах слияния (всегда предпочитайте изменения в одной ветви над другой), тогда вы можете использовать git merge branch -X ours и git merge branch -X theirs. Там есть больше объяснений по этому поводу https://stackoverflow.com/questions/13594344.

Я бы сказал, однако, что git rebase будет иметь больше смысла здесь. Некоторые плюсы и минусы находятся на странице Rebase vs. Merge . Слияние предназначено для сохранения истории событий, в том числе и самого слияния, но, исходя из вашего вопроса, кажется, что вы просто хотите отслеживать события в разработке приложений, скрывая тот факт, что вы когда-либо имели отдельная ветка в первую очередь.

4 голосов
/ 23 апреля 2010

Извини! Не читал до конца, прежде чем ответить ...

git checkout master
git merge feature

Это будет работать без особых усилий, если вы не внесли никаких изменений в master с тех пор, как вы расширили feature от него.

И то, что вы пытаетесь сделать, это именно то, как должны работать ветвления и слияния. Разрабатывайте свои функции в ветке, если она стабильна и работает так, как вы хотите, чтобы она работала, объедините ее обратно в основную ветку.

3 голосов
/ 08 декабря 2017

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

Мне понравился этот подход для того, чтобы ветка A выглядела как ветка B:

git checkout B git diff A > patch_to_make_A_like_B git checkout A git apply patch_to_make_A_like_B

rm patch_to_make_A_like_B в конце.)

1 голос
/ 23 апреля 2010

Ветви - это просто указатели в графе коммитов.Вы можете git-reset указать ветку в любом месте, где хотите, просто убедитесь, что вы отметили предполагаемую ветку, прежде чем делать какие-либо дальнейшие фиксации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...