Je suis très nouveau dans git et je me suis demandé comment je devrais procéder à une fusion où, dans le dépôt local, j'ai supprimé plusieurs fichiers sur la branche master mais ces fichiers existent dans la branche master distante.
Après avoir fait git-merge, il montre les conflits qui se sont produits.
En utilisant git gui, cela montre que le fichier local est supprimé, tandis que le fichier de branche distante a son contenu.
Comment empêcher ces fichiers d'être en conflit? Existe-t-il un moyen simple d'utiliser git gui?
Merci beaucoup
Réponses:
Vous devez résoudre les conflits comme bon vous semble. Si le fichier est vraiment censé être supprimé et que vous publiez ce changement d'origine, supprimez-le à nouveau:
Si le fichier doit en fait encore être suivi, ajoutez-le (la version dans l'arborescence de travail sera la version d'origine):
Après avoir effectué l'une de ces opérations pour résoudre le conflit, validez la fusion.
la source
cd
dans le répertoire, etgit rm *.ext
. Votre shell (pas Git) s'étend*.ext
à tous les noms de fichiers correspondants.git rm
n'a pas de-i
drapeau.git rm *-suffix.ext
? Même différence. Si vous rencontrez un problème pour comprendre comment utiliser les caractères génériques du shell, demandez sur unix.stackexchange.com. Si vous savez pertinemment que ce que vous voulez ne peut pas être fait avec le globbing, utilisezrm -i
et suivez avecgit add -u
pour récupérer les suppressions.-s recursive -X ours
, pourquoi est-il encore nécessaire degit rm
etgit add
?Comme astuce supplémentaire en plus de la réponse acceptée, dans un "supprimé par nous" , si vous souhaitez voir les modifications qui ont été apportées au fichier supprimé afin que vous puissiez appliquer ces modifications ailleurs, vous pouvez utiliser:
S'il s'agit d'un scénario «supprimé par eux» et que vous souhaitez voir les modifications afin de pouvoir les appliquer ailleurs, vous pouvez utiliser:
la source
git diff mybranch@{1}...origin/master -- path/to/file
git diff --base
(voir mon autre réponse).Dans Git GUI, vous sélectionnez le fichier en conflit, puis cliquez avec le bouton droit sur la zone de texte principale où le texte en conflit est affiché.
Dans le menu contextuel qui apparaît, vous pouvez choisir d'aller avec "Remote" ou aller avec "Local". Ainsi, si un fichier est supprimé à distance, vous pouvez choisir «Distant» pour propager la suppression localement, et vice versa.
Il m'a fallu un mois pour le comprendre ... ce serait bien si l'interface graphique Git avait réellement de la documentation ...
la source
La réponse la mieux notée se concentre sur la manière de résoudre le conflit.
Avant cela, vous voulez probablement savoir ce que la télécommande a changé dans les fichiers supprimés localement.
Pour ce faire, vous pouvez voir les changements avec:
Depuis https://git-scm.com/docs/git-diff#Documentation/git-diff.txt--1--base
la source
git diff --base
stackoverflow.com/a/60484874/470749Dans EGit j'ai également trouvé des problèmes. Ma solution était:
la source
Comme indiqué dans cette réponse utile à une question connexe , vous pouvez utiliser
git mergetool
pour ouvrir une boîte de dialogue dans laquelle vous pouvez choisir si vous souhaitez prendre la version modifiée ou supprimée du ou des fichiers.la source