Quand je fais une résolution de conflit de fusion avec Kdiff3 (et un autre outil de fusion que j'ai essayé), j'ai remarqué que lors de la résolution un fichier *.orig
est créé. Y a-t-il un moyen pour qu'il ne crée pas ce fichier supplémentaire?
Une solution possible de git config
:
_git config --global mergetool.keepBackup false
_
Après avoir effectué une fusion, le fichier d'origine avec les marqueurs de conflit peut être enregistré en tant que fichier avec une extension _
.orig
_.
Si cette variable est définie surfalse
, alors ce fichier n'est pas conservé.
La valeur par défaut esttrue
(c'est-à-dire conserver les fichiers de sauvegarde).
L'alternative étant de ne pas ajouter ou ignorer ces fichiers, comme suggéré dans cet article article de gitgur ,
_
git mergetool
_ enregistre la version du fichier contenant un conflit de fusion avec le suffixe "_.orig
_".
Assurez-vous de le supprimer avant d'ajouter et de valider la fusion ou d'ajouter _*.orig
_ à votre _.gitignore
_.
Berik suggère dans les commentaires à utiliser:
_find . -name \*.orig
find . -name \*.orig -delete
_
Charles Bailey conseille à sa réponse d'être conscient des paramètres de l'outil de diff interne qui pourraient également générer ces fichiers de sauvegarde, quels que soient les paramètres git.
.bak
_, comme mentionné dans son manuel ).Vous devez donc également réinitialiser ces paramètres.
Vous devez être un peu prudent avec kdiff3
, car si git mergetool
peut être configuré pour enregistrer un fichier .orig
lors de la fusion, le comportement par défaut de kdiff3
consiste également à enregistrer un fichier. .orig
fichier de sauvegarde indépendamment de git mergetool
.
Vous devez vous assurer que la sauvegarde mergetool
est désactivée:
git config --global mergetool.keepBackup false
et aussi que les paramètres de kdiff3 sont configurés pour ne pas créer de sauvegarde:
Configure/Options => Directory Merge => Backup Files (*.orig)
Pour être clair, la commande correcte de git est la suivante:
git config --global mergetool.keepBackup false
Les deux autres réponses ont des fautes de frappe dans la ligne de commande qui provoqueront un échec ou un dysfonctionnement.
L’option d’enregistrer le fichier .orig peut être désactivée en configurant KDiff3.
J'utilise ceci pour nettoyer tous les fichiers se terminant par ".orig":
function git-clean-orig {
git status -su | grep -e"\.orig$" | cut -f2 -d" " | xargs rm -r
}
Si vous êtes un chat effrayé :), vous pouvez laisser la dernière partie désactivée pour la liste (ou laisser le -r
si vous souhaitez approuver chaque suppression):
function git-show-orig {
git status -su | grep -e"\.orig$" | cut -f2 -d" "
}
Outre les réponses correctes proposées en tant que solutions à long terme, vous pouvez utiliser git pour supprimer tous les fichiers inutiles une fois pour vous avec la commande git clean -f
, mais utilisez git clean --dry-run
en premier pour vous assurer que rien ne se produira par inadvertance.
Cela présente l'avantage d'utiliser des fonctionnalités intégrées testées de Git sur des scripts spécifiques à votre système d'exploitation/shell pour supprimer les fichiers.
J'utilise simplement la commande
git clean -n *.orig
vérifiez que seul le fichier que je veux supprimer est répertorié, puis
git clean -f *.orig
git config --global mergetool.keepBackup false
Cela devrait aussi fonctionner pour Beyond Compare (en tant que mergetool)
Ou simplement ajouter
* .orig
à votre gitignore global
Les fenêtres:
Win/Users/HOME/.gitconfig
set mergetool.keepTemporaries=false
git/libexec/git-core/git-mergetool
, dans la fonction cleanup_temp_files()
, ajoutez rm -rf -- "$MERGED.orig"
dans le bloc else.