Я очень часто работаю над некоторыми особенностями своего проекта, которые мне нужно сделать передышкой, прежде чем он станет достаточно хорош для коммита. Тем не менее, я ежедневно использую два разных компьютера для кодирования (мой ноутбук и рабочий стол моей исследовательской лаборатории). Например: я работаю над функцией дома, затем я останавливаюсь и иду в свою лабораторию.
Я не хочу смешивать облачную синхронизацию (например, Dropbox) с удаленным отслеживанием GitHub.
Я просто передал незавершенные (и грязные) состояния моего кода раньше (и выдвинул его) только для того, чтобы перенести его на другой компьютер, чтобы продолжить работу. Я уверен, что это плохая практика.
Сегодня, однако, я столкнулся git stash
после Googling немного. Кажется, это идеальное решение для того, что мне нужно.
Тем не менее, в документации не говорится, перейдет ли она на github, как только я внесу свои изменения. Кроме того, я хочу знать, есть ли более эффективный способ добиться мобильности, которая мне нужна.
Заранее спасибо!
Ответы:
Это нормально, чтобы совершить грязную незаконченную работу. Делай свою работу в тематической ветке. Фиксируйте рано, и совершайте часто. Читайте на Когда зафиксировать код? для некоторых руководящих принципов о том, когда сделать коммит. Специально для Git закрепите ветку темы и нажимайте на нее так часто, как вы хотите.
Если эта ветка темы предназначена только для вас, зафиксируйте и отправьте неработающий код. Вы должны только отодвинуть сломанный код в ветку, которая используется другими людьми. Не стесняйтесь нарушать свой собственный код.
источник
Тайники предназначены для локального использования, как временное место для размещения вещей, пока вы возитесь с ветками.
Если вы являетесь единственным, кто работает над веткой, нет проблем с фиксацией неработающего кода. Что я делаю, когда в подобных ситуациях делаю прерванный коммит, затем, потянув его в другое место, делаю,
git reset HEAD~1
чтобы отменить его. Конечно, это требует использования--force
вашегоpulls
иpushes
когда вы меняете местоположение.Или я просто подожду, пока мой первый коммит и не сделает a
git commit --amend
. Или я просто раздавил все битые коммиты, когда я фиксирую ветку функций. Или я просто не беспокоюсь о нескольких явно помеченных нарушенных коммитах в моей истории, потому что я не ухожу, пока не окажусь в хорошей остановке. Вариантов много.источник
--amend
поэтому это требует--force
толчков. Лучше совершить только одноразовую ветку.stash
на самом деле ничего не приносит удовлетворения, кроме как очистить ваш рабочий каталог, чтобы «уничтожить вашу ветку»; если вы не сразуstash pop
вернете состояние, все станет очень запутанным.Если есть реальная работа, которую нужно сохранить, даже если она не подходит для постоянной записи репо, она все равно должна быть зафиксирована. Фактически, я никогда не оставляю свой рабочий каталог в состоянии, которое не контролируется версиями - я использую несколько очень простых скриптов Python, чтобы сохранить каждое изменение как временную фиксацию. Если вы хотите попробовать, вот что нужно сделать:
git-tmp-commit
. Он автоматически зафиксирует все изменения в новой уникальной ветке.ccd
скрипта, который фактически проверяет все с нуля до временной папки , автоматически выбирая самую последнюю ветку ... но вы также можете просто вручную извлечь и извлечь веткуtemporary-commits/original-branch/YYYY-MM-DD...
из существующего клона репозитория.git-tmp-commit -r
. Это вернет вас в исходную ветвь † (напримерmaster
) и оставит изменения временного коммита в рабочем каталоге, так что вы можете продолжить здесь, пока не настанет время для правильного коммита (или временного, если вам придется уйти снова).† То, как сценарий написан прямо сейчас, работает только в том случае, если в репозитории нет веток
master
. Так что сомневайся, тебе придетсяgit branch -d master
; это, очевидно, не совсем идеально ...источник