В качестве альтернативы вы можете хранить свои dev и live репозитории в другой ветке, скажем, под названием with-media
, которая всегда совпадает с master
, но с коммитами, которые добавляют медиа в конце истории. Вы можете сохранить эту ситуацию с помощью git rebase
. Например, если вы только что внесли локальные изменения, которые хотите отправить, вы должны сделать:
git push origin master
ssh server
cd dev
# git branch should show you that you're on 'with-media'
git fetch origin
git rebase origin/master
Теперь предположим, что вы загрузили некоторые файлы в репозиторий dev и хотите зафиксировать их:
ssh server
cd dev
git add [whatever-media-files]
git commit
git push origin with-media
Теперь, чтобы обновить ваш репозиторий, вы можете просто сделать:
ssh server
cd live
# git branch should show that you're on 'with-media'
git fetch origin
git merge origin/with-media
Чтобы настроить эти ветви в первую очередь, вы должны сделать:
ssh server
cd dev
# git branch should show that you're on 'master', since you haven't created
# the other branch yet:
git checkout -b with-media
git push origin with-media
cd ~/live
git fetch origin
git checkout -t origin/with-media
В качестве последнего замечания предположим, что вы вносите некоторые изменения в репозиторий dev, которые не просто добавляют медиафайлы, и вы хотите, чтобы эти изменения кода были в вашей ветке master
. Затем (перед тем как что-то нажать!) Вам нужно изменить порядок истории с помощью git rebase -i origin/master
.
ssh server
cd dev
git rebase -i origin/master
# Reorder the lines so that the non-media commits are first (earliest) in the file.
# Save the file and exit your editor.
# Now find the SHA1 sum (object name) of the last commit that has non-media changes.
# (The object name of the commits will have been changed by the rebase.)
git log --oneline
# Let's say that was commit f414f3l. Then you can push just the history up to and
# including that commit back to the master branch with:
git push origin f414f3l:master
# Also push your 'with-media' branch back:
git push origin with-media
В идеальном мире вам не нужно часто делать эти последние шаги, но на практике полезно знать, как это сделать:)