2016-10-13 4 views
0

Я вношу некоторые изменения в некоторый код ETL и хочу, чтобы я ничего не сломал. У меня есть git repo, и все файлы, над которыми я работаю, были зафиксированы и сохранены на Bitbucket. (git push origin master)Создание ветки в git для некоторых больших изменений кода

Я считаю, что я должен сделать новую ветку, правильно? Будет ли это отражать и на Битбукте, или мне нужно как-то подтолкнуть его туда?

git branch config_changes 

Теперь, когда я делаю некоторые изменения в своих файлах, я просто скажу следующее:

git checkout config_changes 
git add filename.py 
git commit -m "changes" 
git push origin config_changes 

Это будет делать резервные копии моих изменений в Bitbucket. Теперь, когда я чувствую, что код готов заменить мой существующий код, я просто делаю:

git checkout master 
git merge config_changes 
git push origin config_changes 

Или должно быть, что последняя строка git push origin master?

Вопрос с бонусом: у меня есть расписание задач Windows, в которых хранятся .py-файлы для автоматизации повседневной работы. Я хочу внести изменения в файлы, но сохранить задачи, выполняемые в текущих (работающих) файлах .py. Есть ли способ сделать это? Диспетчер задач указывает прямо на имя файла. Я дублирую папку сейчас?

+2

После слияния с 'master', нажмите на ветвь' master', а не разветвленную, с которой вы слились. –

+2

Да, дублируйте папку, если вы хотите иметь две ветви одновременно на вашей машине. Вы даже можете добавить «git pull» в свой планировщик, чтобы он автоматически обновлял свою копию. – Peter

ответ

2

Да, вы правы, что большие изменения должны быть выполнены в удаленной ветке. После того, как вы перенесите свое первое изменение в ветвь dev и нажмите его, вы увидите, что ветвь появится в BitBucket.

git checkout -b config_changes 
*make changes* 
git add filename.py 
git commit -m 'message' 
git push origin config_changes 

-b флаг в git checkout говорит мерзавец, что вы создаете новую ветвь от текущей рабочей ветви (в вашем случае, мастер).

При слиянии вы на правильном пути, но вы действительно должны git push origin master. Также рекомендуется использовать git pull origin master, чтобы гарантировать, что ваша главная копия синхронизирована с репозиторием (когда другие работают над одним и тем же проектом).

git checkout master 
git pull origin master 
git merge config_changes 
git push origin master 
+2

** Примечание: ** «pull» будет извлекать последние удаленные ссылки и * объединять их с вашей локальной ветвью. * ЕСЛИ вы не хотите, чтобы ваши локальные изменения сохранялись в ветке 'master' (теоретически, t работать в этой ветке - только объединить в нее - в зависимости от вашей ветвящейся структуры), вы можете получить последние ссылки и принудительно выполнить сброс (чтобы ваша локальная ветвь была такой же, как и на удаленном сервере (битбакет)). 'git fetch origin && git reset --hard origin/master'. –

+0

Прохладный, я попробую это. Как люди решаются для запланированных задач, запускающих определенный файл? Если я вношу изменения в этот файл, тогда есть шанс, что я сломаю его (это произошло сегодня). Git кажется полезным иметь исторические записи и возможность вернуться, но я не могу представить, как это поможет изменить файлы, не создавая новую копию с другим именем или в другой папке. – trench

+1

Запланированные файлы запускаются из ветви 'master'. Как раз перед тем, как задание расписания запускает файлы, выполните 'git fetch origin && git reset --hard origin/master' - если вы хотите, чтобы самая последняя версия была на удаленной ветви' master' для запуска (то есть: отбросить все локальные изменения, и использовать то, что было передано ветке 'master'. –

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