Вопрос:
Как быть, если работал дома, но класс не дописал, хочу дописать на работе, а после сделать коммит. Как отправить незакомиченные данные в удаленный реп?
Ответ:
Нужно сделать из этих изменений новую временную ветку , запушить эту ветку в remote репозитарий, на работе скачать и дальше работать. Когда изменения достигнут какого-то логичного состояния, добавить их в предыдущий коммит (или если вы делали несколько коммитов в новой ветке, слить их в один) и ветку смерджить в вашу рабочую ветку. (Предполагаю, что вы не в master работаете).
По пунктам:
1. Индексируем изменения, делаем новую ветку и коммитим в нее изменения:
git add .
git checkout -b develop-temp
git commit -m'temporary commit'
2. Заливаем временную ветку на удаленный репозиторий. Предполагаю, что удаленный репозиторий называется origin, иначе замените имя на верное.
git push -u origin develop-temp
3. Приходим на работу, забираем ветку. Можно продолжать работу:
git checkout -b develop-temp origin/develop-temp
Здесь может возникнуть проблема: мы не запомнили, как называлась временная ветка, поэтому не можем выполнить вышеприведенную команду. Чтобы вспомнить название ветки, можно дать команду просмотра краткой информации в удаленном репозитарии. В числе прочих, там будет выведена информация о ветках:
git remote show origin
* remote origin
Fetch URL: https://github.com/user/repo
Push URL: https://github.com/user/repo
HEAD branch: master
Remote branches:
master tracked
testing tracked
develop-temp new (next fetch will store in remotes/origin)
Local branch configured for 'git pull':
master merges with remote master
Local ref configured for 'git push':
master pushes to master (up to date)
4. Временную ветку можно использовать дальше, чтобы снова поработать дома (хотя вообще-то это трудоголизм). Когда она не нужна, удалите её:
git push origin :develop-temp