web-dev-qa-db-fra.com

Android Projet de mise à jour Studio: Fusion / Rebase / Direction par défaut

Toutes mes excuses si cela semble superflu car je sais qu'il y a pas mal de questions concernant Merge vs Rebase, mais il ne semble pas y en avoir qui insère également "Branch Default".

Vous êtes confronté à un cas où plusieurs personnes travaillent simultanément sur quelque chose (c'est-à-dire une application Android dans Android Studio). Quelle est la meilleure option pour mettre à jour le projet/extraire si quelqu'un insère dans la branche principale et que vous souhaitez extraire le nouveau maître de manière à ne pas écraser le travail sur lequel vous travaillez toujours et que vous devez encore valider et pousser à maîtriser? Android Studio clique sur "Fusionner" "Rebase" et "Branche par défaut" en cliquant sur "Mettre à jour le projet". De ce que cela ressemble, je voudrais faire "Rebase" (suivi de "Merge"?), Mais je ne suis pas tout à fait sûr.

54
Kurt Wagner

Stashing

La clé ici est que vous avez un travail non engagé que vous souhaitez enregistrer. Avant d'essayer de fusionner quoi que ce soit, vous devez stocker vos modifications pour enregistrer vos modifications non validées et nettoyer votre répertoire de travail.

Courir git stash pour cacher vos modifications. Vous devriez alors pouvoir extraire les modifications sans problème.

Après avoir tiré avec succès, vous pouvez faire un git stash apply pour réappliquer les modifications que vous avez effectuées avant le pull.

Fusion et rebasement

Le stockage de vos modifications ne fonctionne que si vous avez uniquement non validé. Si à un moment donné vous avez validé mais que vous n'avez pas poussé, vous devrez soit rebaser, soit fusionner.

Cet article de StackOverflow contient de très bonnes informations sur les différences.

En général, la fusion est plus facile, mais certains pensent qu'elle "pollue" l'historique de git avec des commits de fusion.

Réinitialiser nécessite du travail supplémentaire, mais comme vous n'avez pas de commit de fusion, cela rendra la fusion invisible.

Encore une fois, dans votre cas, vous ne devriez pas avoir besoin de fusionner ou de rebaser. Il suffit de cacher, de tirer, puis d’appliquer la cachette et tout devrait bien se passer.

40
Tanis.7x

enter image description here

Selon IntelliJ IDEA documnetatition :

Type de mise à jour

  • Fusion : choisissez cette option pour appliquer la stratégie de fusion. Le résultat est identique à celui de l'exécution de git fetch ; git merge ou git pull --no-rebase.
  • Rebase : choisissez cette option pour appliquer la stratégie de rebase. Le résultat est identique à celui de l'exécution de git fetch ; git rebase ou git pull --rebase.
  • Branch Default : choisissez cette option pour appliquer la commande par défaut à la branche. La commande par défaut est spécifiée dans le branch.<name> section du .git/config fichier de configuration.

Nettoyer l'arbre de travail avant la mise à jour

Dans cette zone, spécifiez la méthode pour enregistrer vos modifications lors du nettoyage de votre arbre de travail avant la mise à jour. Les modifications seront restaurées une fois la mise à jour terminée. Les options disponibles sont:

  • Utilisation de Stash : choisissez cette option pour enregistrer les modifications dans une réserve Git. Vous pourrez ainsi appliquer des correctifs dont Stash est modifié même en dehors d'IntelliJ IDEA. généré par Git lui-même. En utilisant
  • Shelve : choisissez cette option pour que les modifications soient enregistrées sur une étagère. Shelving est une opération IntelliJ IDEA), les correctifs générés à partir des modifications stockées s’appliquent normalement (non affichées) dans IntelliJ IDEA. Il est également possible d’appliquer des modifications stockées en dehors de IntelliJ IDEA). mais nécessite des étapes supplémentaires.
17

Je ne trouvais pas la réponse à cette question (le flux de travail) dans aucun des documents de Google ... Voici donc mon expérience pratique d'utilisation de Android Studio et Git complètement à partir d'une interface utilisateur.

(Je vomis à l'idée de basculer entre la ligne de commande et IDE - cela signifie que le IDE fait défaut!)

  1. Cachez vos modifications avec: Cliquez-droit sur Projet -> Git -> Référentiel -> Modifications cachées. Donne lui un nom.
  2. Extrayez les mises à jour effectuées par votre collègue: Clic droit sur Projet -> Git -> Référentiel -> Extraire
  3. Fusionner vos modifications de code avec: Cliquez avec le bouton droit de la souris sur Projet -> Git -> Référentiel -> Modifications de suppression de stockage -> Appliquer le cachage
  4. Vous verrez alors une interface utilisateur "Fichiers fusionnés avec des conflits". C'est ici que vous sélectionnez un fichier et que vous le fusionnez de manière sélective.

AVERTISSEMENT

La fusion manuelle "Fusionner Révisions" UI est TERRIBLE . Une fois que vous l'essayez, vous verrez ce que je veux dire. Bonne chance pour que "Synchronize Scrolling" fonctionne réellement. J'espère sincèrement que cette interface utilisateur sera abordée dans les premières semaines de 2015.

6
Someone Somewhere

Selon documentation :

Fusion : sélectionnez cette option pour exécuter fusion lors de la mise à jour. Cela équivaut à courir
git fetch et alors git merge, ou git pull --no-rebase.

Rebase : sélectionnez cette option pour effectuer rebase pendant la mise à jour. Cela équivaut à courir
git fetch et alors git rebase, ou `git pull --rebase (tous les commits locaux seront placés au-dessus de la tête amont mise à jour).

Branche par défaut : sélectionnez cette option si vous souhaitez appliquer différentes stratégies de mise à jour pour différentes branches. Vous pouvez spécifier le type de mise à jour par défaut pour chaque branche dans le fichier branch.<name> section du .git/config fichier de configuration.

Merge vs Rebase

Lire la suite ici

3
yoAlex5

Mise à jour du projet Git avec Android terminal de studio

  1. git add.
  2. git commit -m "n'importe quoi"
  3. maître git Push Origin

C'est ce que je voulais trouver la réponse de votre post. C'est pourquoi j'ai écrit cette réponse.

0
Deepak Ror