2013-11-26 5 views
0

Я очень новичок в Git, и я подумал, что я как-то понял Git, пока не ударил еще одну стену.Обновление мастера, когда git, указывающий на местный

Я даже не уверен, что задал правильный вопрос, но, пожалуйста, несите меня или направляйте меня. Вот то, что я прямо сейчас:

  1. Тянут в мастер-ветви с Git репо
  2. Сделаны некоторые изменения
  3. Создать новый «временный» филиал и совершившие мои изменения к нему и толкнул его кода обзор (не сливался с мастером). Git branch --list теперь показывает, что я указываю на ветку temp.
  4. Пробовал запуск сервиса связанной коды и тянул в последних зависимости, которые привели к ошибкам компиляции в моем IDE для моего проекта (ранее было запущенно)

Вот мои вопросы:

  1. Я хочу сделать git pull только мастер. Прямо сейчас git указывает на мой локальный репозиторий, и я боюсь, если я сделаю «git pull», он перезапишет мои изменения. Есть ли способ изменить мою ветку, чтобы осваивать ее и обновлять без потери моих изменений?

  2. Как только я смогу переключиться на Мастер и вытащить последнее, я предполагаю, что новый код будет работать (кроме моих изменений не будет). Чтобы включить мои изменения, которые уже были в обзоре кода, мне нужно было бы повторно сделать все в Мастер и совершить снова? Я потерян в отношении рабочего процесса. Это просто плохая практика иметь местный филиал, в то время как Мастер постоянно меняется и должен реорганизовать вашу работу?

Уверен, что в моем понимании есть разъединение, поэтому оцените любую помощь.

Благодаря

ответ

0

Для Q1 к проверке мастер-ветви, делать git checkout master (перед мастер оформления заказа, вы можете запустить git status на временную ветвь, чтобы убедиться, что ваше рабочее пространство в чистоте). Как только на главной ветке вы можете сделать git pull, чтобы получить последнюю смену мастера на стороне сервера в локальное репо.

Для Q2 Хотя вы можете вручную применить все изменения к мастеру один за другим, вы не должны этого делать. Потому что это изменит фиксацию его локальных изменений в ветке temp, которая может привести к тому, что система проверки кода примет их как итоговую новую фиксацию (через разности полностью совпадают). Если вы просто хотите знать, что он хотел бы, если бы объединить последние изменения мастера и локальную ветвь temp. Вы можете: git checkout temp git checkout -b temp_with_master # создать новую тестовую ветвь от температуры git merge master # слияние изменений хозяина сделать забавную git checkout temp git branch -d temp_with_master #, наконец, удалить тестовую ветвь

0

Не уверен, что, если я правильно понял проблему. Когда ваши изменения находятся только на вашем местном ветке temp, не должно возникнуть проблемы с вытаскиванием мастера.

Изменения в основной ветви с

git checkout master 

и тянуть только мастер

git pull origin master 

(если это не начало, смотреть на мерзавца удаленного -v)

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

для фиксаций Я рекомендую

git citool 

Если вы еще не используете его.

Нет проблем с наличием локальной ветви, когда главная ветка постоянно меняется. Хотя, если он постоянно меняется, я бы назвал его развитым, а не мастером. Но это может зависеть ...

Вам не нужно переделывать все в мастер. Что вам нужно, это слияние git.

перейдите в мастер-ветку с мастером проверки git и слейте в нем локальную температуру.

git merge master temp 

Это может привести к конфликтам, которые вам необходимо решить, если кто-то изменил те же строки, которые вы изменили. Но вам будет сказано, что git.

+0

Спасибо всем. Я думаю, что большая часть, которую я отсутствовала, была «Git checkout master». Сделав это, я смог исключительно обновить Мастер, а затем я столкнулся с другим набором проблем. Кроме того, спасибо за различные стратегии, о которых вы упомянули. Я должен буду дать им вихрь, чтобы лучше понять подход, который будет соответствовать моим потребностям. Цените тщательные ответы! – noob101

0

Для 1.) Да, это возможно. Если у вас есть незафиксированные изменения, над которыми вы все еще работаете, просто продолжайте и фиксируйте их перед внесением изменений (например, обновление других ветвей). Вы всегда можете вернуться в свою ветку «temp» позже и даже «изменить» ее с большим количеством изменений, если вы не сделали этого. (git stash - также команда, которую многие находят полезной для этой цели). Итак, что вы просите бы так:

> git commit -a -m "stashing my changes" 
> git checkout master 
> git pull origin 
> git checkout temp 

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

Ответ на вопрос 2.) немного зависит от рабочего процесса, установленного самим проектом. Эти два варианта - слияние и перезагрузка, и это путает, объясняя плюсы и минусы каждого.

Если обзор не очень важен (только функция работает, проходит тесты и т. Д.), То некоторым людям проще слить мастер в темп (иногда несколько раз по сравнению с разработкой функции в вашей ветке) и когда он будет готов, попросите, чтобы ветка снова слилась с мастером. Это несколько похоже на рабочий процесс SVN, где вы периодически обновляете свое рабочее дерево и выполняете только завершение, когда это будет сделано. Однако в этом случае у вас будет больше коммитов с git, так как каждое слияние записывается, и все изменения будут усложняться.

(hack, hack, hack, commit to temp) 
> git fetch origin 
> git merge origin/master 
(resolve merge conflicts) 

Второй вариант перебазирования, в котором вы повторяйте все ваши изменения в верхней части обновленной версии мастера. Git автоматизирует столько, сколько может, и останавливается, когда он сталкивается с проблемами (которые обрабатываются так же, как конфликт слиянием).

(hack, hack, hack, commit to temp) 
> git checkout master 
> git pull 
> git checkout temp 
> git rebase master 
(resolve merge conflicts) 

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

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