Как правильно переключить девелоперское устройство с неустановленными изменениями? - PullRequest
0 голосов
/ 17 февраля 2019

Я разрабатывал на двух устройствах.

Что бы я обычно делал, когда мне нужно было выходить на улицу и использовать свой ноутбук, это массовая стадия моих ожидающих изменений, их фиксация и подталкивание, чтобы я могпозже возобновите разработку, извлекая из моего ноутбука.

Однако очевидно, что это плохая практика - просто вносить кучу случайных изменений и помещать их в общий коммит.

Есть ли какой-то способнажмите git stash , потяните тайник и сделайте все стадии незавершенными на другом устройстве.

Ответы [ 3 ]

0 голосов
/ 17 февраля 2019

Выполнение коммита на временной ветке, которую вы затем нажимаете, не нарушает идиомы Git.Вы можете очистить сообщения коммита и т. П. Позже.

Если вы настроены против использования фактического коммита, вы можете спрятать, а затем сохранить шкатулку в формате патча.

git stash #stash everything
git stash show -p > stash.diff #save patch-formatted stash to file

Затемвам просто нужно получить файл stash.diff на второй компьютер и выполнить git apply stash.diff.

0 голосов
/ 18 февраля 2019

Я бы сказал, что предпосылка вашего вопроса неверна:

очевидно, что это плохая практика - просто ставить кучу случайных изменений и помещать их под общий коммит

Нет, это не так.Поместите все изменения в общий коммит и извлеките их на другом компьютере.

Два наблюдения:

  • Страх совершить все в кучу, потому что нетВремя разбирать все это в прекрасной рационализированной истории - плохой запах в рабочем процессе.Совершайте рано и часто!Будет время, чтобы разобраться со всем этим позже в post-production .

  • Если беспокойство заключается в том, что переписывание истории позже является анти-паттерном, потому что эта ветвьпредоставляется другим пользователям в хранилище, тогда не делится этой веткой с другими пользователями в хранилище.При необходимости отследите эту ветку на другом пульте.Это то, чем я занимаюсь;Я публично раскрываю свою работу на github, но только после того, как я настроил все конфиденциально на bitbucket, у которого есть ветви, которые никогда не отправляются на github.

0 голосов
/ 17 февраля 2019

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

С машины 1 в вашей ветке:

# you have unfinished modifications to "save"
git commit -am "temp"
git push origin HEAD

На компьютере 2 в вашей ветке:

# get your last commit like you usually do, let's say
git pull

# now let's "uncommit" the ugly temp
git reset HEAD^

(в качестве напоминания, git reset без --soft или --hard делает его режимом по умолчанию --mixed.Это означает, что изменения хранятся в рабочем дереве, поэтому только указатель ветви настроен на другой коммит)

На данный момент у вас есть ожидающие модификации от Машины 1, готовые для дальнейшего изменения, добавленныеи «правильно» зафиксировано, когда вы будете готовы.


Наконец, как вы спросили в комментарии, да, вам придется принудительно толкать в любом случае, когда вы хотите отразить назад на пульте (которыйвсе еще имеет временный коммит, который вы локально уничтожили, чтобы его заменили на ваш).

И, конечно, спасибо torek за полезную оптимизацию.

...