6
votes

Le bon processus git pour travailler alternativement à la maison et au bureau

Je travaille à mi-temps à la maison, à mi-temps au bureau. Chaque tâche doit être effectuée dans une branche dédiée, séparée, fusionnée après examen par les pairs.

Notre projet est soutenu par Bitbucket, nous utilisons également Jira et Jenkins.

Je n'utilise qu'un seul dépôt distant et deux dépôts locaux.

J'ai un problème récurrent: des conflits surviennent entre moi (@home) et moi (@agency) ...

voici mon processus:

Lundi, au bureau, dans une succursale nommée "JamesBond007" dérivé du maître:

rm -fr repo
git clone ssh:repos-url

Mardi, à la maison:

git checkout master
git pull
git checkout JamesBond007
git pull --rebase origin master   **<-- conflict: git mergetool command needed!!!**

git

1 commentaires

Ne rebasez pas le maître. Au lieu de cela, lorsque vous arrivez au bureau le mercredi, réinitialisez votre succursale sur le même commit que vous avez utilisé à la maison lorsque vous avez terminé mardi soir.


3 Réponses :


0
votes

Le problème se produit lorsque vous rebasez la branche de travail en master à plusieurs endroits.

Chaque tâche doit être effectuée dans une branche dédiée, séparée, fusionnée après examen par les pairs.

Il existe plusieurs façons de le faire fonctionner (selon votre familiarité avec git). Sur cette base, je suppose que vous devez rebaser les journaux de validation.

Je vais suggérer une modification simple de votre flux de travail: à la fin de chaque jour, poussez toujours vers origine et supprimez votre branche locale.

# Assuming you're on JamesBond007 local branch
git push [-f] origin remote/JamesBond007
git checkout master
git branch -d JamesBond007

De cette façon, vous serez certain d'avoir transféré tout ce qui est supprimé localement. La prochaine fois que vous reviendrez sur le même ordinateur, vous ne souffrirez pas du problème que vous avez une branche locale qui a un commit de base différent.


0 commentaires

5
votes

J'ai une configuration très similaire et je n'ai jamais de conflits de fusion: je fais essentiellement ce que vous faites, mais je n'utilise jamais rebase de quelque façon que ce soit, jusqu'à peut-être à la toute fin, dans le cadre de la fusion vers maître.

Concrètement:

  • Je valide et pousse fréquemment pendant que je travaille, en utilisant l ' origine comme outil de sauvegarde.
  • Je peux passer facilement à un autre ordinateur en effectuant simplement une avance rapide pull / fetch sur celui-ci, puis en me rendant au travail.
  • Enfin, lorsque le code a été révisé dans le PR, j'effectue une sorte de fusion ou de rebase ou d'écrasement / fusion en fonction du style du projet.

  1. Je bascule entre plusieurs ordinateurs de développement (ordinateur de bureau ici, ordinateur portable ou deux là-bas ...) sans aucune pensée. Juste un git pull et je suis parti ...
  2. Je n'ai jamais de conflits.

0 commentaires

-1
votes

Enfin, j'ai trouvé ici et ici la façon de go:

git fetch
git reset --hard origin/develop/STC-204.......

git fetch télécharger les modifications et git reset --hard défini sur le dernier commit de la branche de travail sans rien fusionner.


0 commentaires