Je travaille très souvent sur certaines caractéristiques de mon projet que je dois faire une pause avant qu'il ne soit assez bon pour un commit. Cependant, j'utilise tous les jours deux ordinateurs différents au code (mon ordinateur portable et mon bureau de recherche de recherche). E.g.: Je travaille sur une fonctionnalité à la maison, puis je m'arrête et allez à mon laboratoire.
Je ne veux pas mélanger la synchronisation du cloud (E.g. Dropbox) avec le suivi à distance GitHub.
Je n'ai simplement pas commis d'états inachevés (et désordonnés) de mon code avant (et je l'ai poussé) uniquement dans le but de tirer cela dans l'autre ordinateur pour continuer le travail. Je suis à peu près sûr de cette mauvaise pratique.
Aujourd'hui, je suis tombé sur git stash
Après avoir googling un peu. Il semble que la solution parfaite pour ce dont j'ai besoin.
Cependant, la documentation ne dit pas si cela va à Github une fois que je pousse mes changements. En outre, je veux savoir s'il y a un moyen plus efficace d'accomplir la mobilité dont j'ai besoin.
Merci d'avance!
Je n'ai simplement pas commis d'états inachevés (et désordonnés) de mon code avant (et je l'ai poussé) uniquement dans le but de tirer cela dans l'autre ordinateur pour continuer le travail. Je suis à peu près sûr de cette mauvaise pratique.
C'est bon de commettre un travail sans fin. Faites votre travail dans une succursale. S'engager tôt et commettre souvent. Lisez-le sur quand commettre le code? Pour certaines directives sur quand faire un commit. Spécifiquement pour Git, engagez-vous à une succursale et poussez-le aussi souvent que vous le souhaitez.
Si cette succursale est simplement destinée à vous, commettez et poussez le code brisé. Vous ne devez que reporter poussant Code brisé vers une branche utilisée par d'autres personnes. N'hésitez pas à casser votre propre code.
Les catastrophes sont destinées à une utilisation locale, comme lieu temporaire pour mettre des choses pendant que vous vous déconnectez avec des branches.
Si vous êtes le seul à travailler sur une branche, il n'y a aucun problème à commettre un code brisé. Ce que je fais quand dans des situations similaires est un commit brisé, puis après l'avoir tiré à l'autre endroit, faites un git reset HEAD~1
Pour annuler. Bien sûr, cela nécessite d'utiliser --force
sur votre pulls
et pushes
Lorsque vous modifiez des emplacements.
Ou j'attends juste mon premier commit et faire un git commit --amend
. Ou je viens de courter tout ce que le cassé s'engage quand je commettre la branche de fonctionnalité. Ou je ne m'inquiète tout simplement pas de quelques-uns brisés clairement marqués dans mon histoire, parce que j'ai tendance à ne pas partir avant d'être une bonne place. Il y a beaucoup d'options.
stash
_ n'est pas vraiment satisfaisant pour rien que de nettoyer votre répertoire de travail sur "UNJAM Votre branche"; Si vous ne le faites pas immédiatement stash pop
L'état à l'arrière alors les choses vont devenir très déroutantes.
S'il y a eu des travaux réels à sauver, même si ce n'est pas bon pour une entrée de répétition permanente, il devrait toujours être un commit. En fait, je ne quitte jamais mon répertoire de travail dans un état qui n'est pas sous contrôle de la version - J'utilise certains très simples Python scripts pour enregistrer chaque changement en tant que commit temporaire. Si vous voulez donner cela un essai, voici quoi faire:
git-tmp-commit
. Cela engagera automatiquement toutes les modifications à une nouvelle branche unique.ccd
script, qui vérifie tout de zéro à un dossier temporaire , Choisir automatiquement la branche la plus récente ... mais vous pouvez également rechercher et vérifier manuellement la succursale temporary-commits/original-branch/YYYY-MM-DD...
d'un clone existant du repo.git-tmp-commit -r
. Cela vous ramènera à la branche d'origine† (E.G. master
) et laissez les modifications de la validation temporaire dans le répertoire des travaux, vous pouvez donc continuer ici jusqu'à ce qu'il soit temps de commenter (ou temporaire, si vous devez repartir).†La façon dont le script est écrit en ce moment, cela ne fonctionne que si Il n'y a pas de branche master
dans la checkout Repo . Donc, sans doute, vous auriez à git branch -d master
; Cela n'est évidemment pas vraiment idéal ...