Git: лучший способ коммит / пуш
Когда я работал над проектами, использующими систему управления git, каждый раз, когда я хочу зафиксировать, затем выдвигаю свои модификации, git pull
до. Но проблемы, с которыми я сталкиваюсь, состоят в том, что во многих случаях git запрещает мне тянуть, потому что я должен прежде, чем совершить свои локальные изменения. Я имел обыкновение делать то, что у меня есть другое чистое репозиторий git, где я не изменяю его напрямую, но когда мне нужно, я использую его для git pull
затем объедините мои модификации с помощью meld из другого репозитория, где я работаю. Но я думаю, что этот путь не самый лучший и теряет много времени, пора его оптимизировать. Я думаю, что я создаю другую локальную ветку "work_branch" и фиксирую в ней свои модификации, затем объединяю коммиты из "work_branch" в "master", затем добавляю master после pull. Так что сценарий должен быть таким:
git branch work_branch
git checkout work_branch
#modify in branch work_branch
git commit
git add <files list>
git commit -m "fixes branch work" #local commit
gitk ==> get the id of "fixes branch work" commit (example: 5b099287c229e16c24bfcdbfd6fba384cfe165e6)
git checkout master
git pull
git cherry-pick 5b099287c229e16c24bfcdbfd6fba384cfe165e6 #merge "fixes branch work" commit from work_branch to master branch
git push
Проблема, с которой я столкнулся, заключается в том, что после третьего шага (#modify в ветке work_branch) каждый модификатор в ветке work_branch просматривается главной веткой, но я хочу, чтобы главная ветка могла видеть из work_branch только объединенный коммит после git cherry-pick
команда. Есть ли способ улучшить мое решение. Или есть другой хороший способ оптимизировать работу с git.
1 ответ
Git - это VCS (система контроля версий).
Как обычно используется git
Ветка компонента создается там, где вам необходимо внести изменения, в то время как работа идет в основной ветви (например, исправление ошибок) и когда ветка функции готова для добавления в мастер (т.е. вы готовы добавить функцию в базу вашего основного кода).) вы git merge <feature branch>
Это немного грязно. Попробуйте следовать обычному методу, в котором вы фиксируете каждое нужное вам изменение в своем коде и, в конце концов, объединяете его с мастером.
Еще одно предложение, используйте git rebase
, (Google это, есть много объясняя это визуально). Также Google git fetch
затем git merge origin/master
Мастер-метод для отражения изменений мастера в вашем рабочем репо. использование rebase
, чтобы увидеть только один коммит (не коммит + коммит слияние) в вашем репо
В основном, пройдите учебник по git. Это легко, и вы поймете основы менее чем за 10 минут.