Comment conserver le fichier local ou le fichier distant pendant la fusion en utilisant Git et la ligne de commande?
je sais comment fusionner la modification en utilisant vimdiff, mais, en supposant que je sais juste que le fichier entier est bon à garder ou à jeter, comment faire?
Je ne veux pas ouvrir vimdiff pour chacun d'eux, je change la commande qui dit "keep local" ou "keep remote".
E. G: j'ai obtenu une fusion avec des fichiers marqués comme changé parce que quelqu'un l'a ouvert sous windows, changer la fin de vie, et puis Commité. En fusionnant, je veux juste garder le mien version et jeter le sien.
je suis aussi intéressé par le contraire: j'ai fait une grosse erreur et je veux accepter le fichier distant, en rejetant mes modifications.
4 réponses
, Vous pouvez aussi bien le faire:
git checkout --theirs /path/to/file
pour conserver le fichier distant, et:
git checkout --ours /path/to/file
pour conserver le fichier local.
puis git add
eux et tout est fait.
Facile, n'est-ce pas? :)
cette approche semble plus simple, évitant la nécessité de sélectionner individuellement chaque fichier:
# keep remote files
git merge --strategy-option theirs
# keep local files
git merge --strategy-option ours
ou
# keep remote files
git pull -Xtheirs
# keep local files
git pull -Xours
copié directement de: résoudre les conflits de fusion Git en faveur de leurs changements lors d'une traction
pour le bidule d'extrémité de ligne, se référer à man git-merge
:
--ignore-space-change
--ignore-all-space
--ignore-space-at-eol
assurez-vous d'ajouter autocrlf = false
et/ou safecrlf = false
au clone windows (.git / config)
à l'Aide de git mergetool
si vous configurez un mergetool comme ceci:
git config mergetool.cp.cmd '/bin/cp -v "$REMOTE" "$MERGED"'
git config mergetool.cp.trustExitCode true
puis un simple
git mergetool --tool=cp
git mergetool --tool=cp -- paths/to/files.txt
git mergetool --tool=cp -y -- paths/to/files.txt # without prompting
fera le travail
à l'Aide de simples commandes git
dans les autres cas, je suppose
git checkout HEAD -- path/to/myfile.txt
devrait faire l'affaire
Modifier pour faire l'inverse (parce que vous foiré):
git checkout remote/branch_to_merge -- path/to/myfile.txt
git checkout {branch-name} -- {file-name}
ceci utilisera le fichier de la branche de choix.
j'aime cela parce que posh-git
autocomplete fonctionne très bien avec cela. Elle supprime également toute ambiguïté quant à la branche distante et à la branche locale.
Et --theirs
ne marchait pas pour moi de toute façon.