Чи варто використовувати git stash для збереження поточних змін мого проекту та підштовхнути його до github для доступу до інших комп’ютерів?


20

Я дуже часто працюю над деякими особливостями свого проекту, про те, що мені потрібно зробити перерву, перш ніж він буде достатнім для здійснення зобов'язань. Однак я щодня використовую два різних комп’ютери для кодування (мій ноутбук та робочий стіл дослідницької лабораторії). Наприклад: я працюю над функцією вдома, потім зупиняюся і йду до своєї лабораторії.

Я не хочу змішувати хмарну синхронізацію (наприклад, Dropbox) з віддаленим відстеженням GitHub.

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

Сьогодні я git stashхоч трохи натрапив на Гуглінг. Це виглядає як ідеальне рішення для того, що мені потрібно.

Однак документація не говорить, чи переходить вона до github, коли я натискаю свої зміни. Крім того, я хочу знати, чи існує більш ефективний спосіб досягти тієї мобільності, яка мені потрібна.

Спасибі заздалегідь!


1
Я голосую за те, щоб закрити це питання поза темою, тому що на нього вже відповіли на " Переповнення стека"
Девід Арно

5
@DavidArno: Я не думаю, що це копія між веб-сайтами. Питання StackOverflow стосується "Чи можу я зробити X", а це питання - "Чи це Х - хороша практика". Принаймні першопричина питання інша.
Грег Бургхардт

7
@DavidArno останнє, що я перевірив, "Вже відповів на ТАК" - це не привід закривати питання.
RubberDuck

Відповіді:


28

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

Добре вчиняти безладну незавершену роботу. Робіть свою роботу в тематичній галузі. Робіть зобов’язання рано і виконайте часто. Читайте на тему " Коли здійснити код"? деякі рекомендації щодо того, коли взяти на себе зобов’язання. Спеціально для Git, присвятіть тематичну гілку та натисніть її так часто, як вам захочеться.

Якщо ця галузь теми призначена саме для вас, введіть і натисніть зламаний код. Вам слід лише відкладатись від натискання зламаного коду до гілки, якою користуються інші люди. Ви можете зламати власний код.


6
Я б навіть сказав це сильніше: ніколи не працюйте на головній галузі, завжди використовуйте тему. Прихиляйтесь до нього так, як вам здається, до душі безтурботно. Коли ви задоволені змінами, з’єднайте їх з основним.
9000

Чудова порада! Я думаю, що велика плутанина може статися тому, що нам потрібно додати коментар до комісії, а іноді це буде буквально щось на кшталт "виконання завдання" чи щось подібне. І так, я працюю один в цій галузі, тому все, що ви сказали, має сенс!
Леандро

4
Це також надає вам можливість збивати окремі комісії в один при об'єднанні вашої гілки git merge --squash bugfix
snoopy

2
@Leandro введення повідомлень має бути настільки ж атомним і чітким, як це має сенс. Наприклад, навіть якщо це WIP, ви можете сказати, наприклад, "Додавання контролера для обробки запитів сторінки - WIP". Повідомлення про фіксацію також містять історію пошуку змін, внесених до проекту. Десять комісій "WIP", наприклад, не допоможуть нікому, хто шукає змін, що стосуються користувачів, які керують.
Бен

7

Кропив'янки призначені для місцевого використання, як тимчасове місце для розміщення речей, поки ви возитесь з гілками.

Якщо ви єдиний, хто працює у відділенні, немає проблем із введенням зламаного коду. Що я роблю, коли в подібних ситуаціях - це неполадна фіксація, після того, як потягнувши її в іншому місці, виконайте git reset HEAD~1скасування. Звичайно, це вимагає використання --forceна ваших pullsі pushesколи ви змінюєте місця.

Або я просто зачекаю, коли я вперше зробить свою команду git commit --amend. Або я просто розбиваю всі зламані дії, коли я здійснюю гілку функції. Або я просто не переживаю за кілька чітко позначених порушених подій у моїй історії, тому що я, як правило, не залишаю, поки не буду на хорошому місці зупинки. Варіантів дуже багато.


1
Я б не рекомендував звикати, щоб --amendце вимагало --forceдля поштовхів. Краще взяти участь лише у викинутій гілці.
Ліворуч

1

stashнасправді не задовольняє нічого, крім очищення робочого каталогу, щоб “уняти вашу філію”; якщо не одразу stash popповернути стан, то речі стануть дуже заплутаними.

Якщо є фактична робота, яку потрібно зберегти, навіть якщо це не добре для постійного запису репо, це все одно має бути зобов'язанням. Насправді я ніколи не залишаю свій робочий каталог у стані, який не перебуває під контролем версій - я використовую кілька дуже простих скриптів Python, щоб зберегти кожну зміну як тимчасове виконання. Якщо ви хочете спробувати, ось що робити:

  1. Коли ви виконали якусь незакінчену роботу і збираєтесь залишити робоче місце, виконайте виконання git-tmp-commit. Він автоматично здійснює всі зміни в новій, унікальній галузі.
  2. Натисніть цю гілку на віддалений.
  3. Залишати.
  4. Коли ви хочете продовжити, клонуйте цю гілку знову з віддаленого пристрою. Я роблю це зі ccdсценарієм, який фактично перевіряє все, починаючи з нуля до тимчасової папки , автоматично вибираючи останню гілку ... але ви також можете просто вручну взяти і оформити гілку temporary-commits/original-branch/YYYY-MM-DD...з існуючого клону репо.
  5. Нарешті, "скасувати" зміни за допомогою git-tmp-commit -r. Це поверне вас до початкової гілки (наприклад master) і залиште зміни тимчасового комітету в робочому каталозі, тому ви можете продовжувати тут, поки не настане час для належної фіксації (або тимчасової, якщо вам доведеться піти знову).

Спосіб написання сценарію прямо зараз, це працює лише в тому випадку, якщо в репо репортах немає відділенняmaster . Тож сумніваєтесь, вам доведеться git branch -d master; це, очевидно, не дуже ідеально ...

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.