Outil Simple à "accepter les leurs", ou " accepter la mienne sur un ensemble de fichiers à l'aide de git
Je ne veux pas d'une fusion visuelle de l'outil, et je ne veux pas avoir à vi le fichier en conflit et de choisir manuellement le entre la TÊTE (la mienne) et de l'importation de changement (pour eux). La plupart du temps, soit je souhaite à tous de leurs modifications ou tous les miens. C'est en général parce que mon changement amont immédiat et est venue vers moi à travers un pull, mais peut être légèrement modifié en divers endroits.
Est-il un outil de ligne de commande qui permettra de se débarrasser des marqueurs de conflit et de choisir tous d'une façon ou d'une autre basée sur mon choix? Ou un ensemble de commandes git qui je peux alias moi-même à faire de chacun.
# accept mine
alias am="some_sequence;of;commands"
alias at="some_other_sequence;of;commands"
Le faire, c'est plutôt gênant.
Pour " accepter la mienne, j'ai essayé:
randy@sabotage ~/linus $ git merge test-branch
Auto-merging Makefile
CONFLICT (content): Merge conflict in Makefile
Automatic merge failed; fix conflicts and then commit the result.
randy@sabotage ~/linus $ git checkout Makefile
error: path 'Makefile' is unmerged
andy@sabotage ~/linus $ git reset --hard HEAD Makefile
fatal: Cannot do hard reset with paths.
Comment suis-je censé se débarrasser de ces marqueurs?
Je peux le faire:
git reset HEAD Makefile; rm Makefile; git checkout Makefile
Mais cela semble plutôt rond, il doit y avoir une meilleure façon. Et à ce point, je ne suis pas sûr si git pense même de la fusion qui s'est passé, donc je ne pense pas que ce nécessairement de même des œuvres.
Va dans l'autre sens, de faire "accepter les leurs", est tout aussi bordélique.
La seule façon que je peux comprendre, il est à faire:
git show test-branch:Makefile > Makefile; git add Makefile;
Cela me donne aussi une foiré message de commit qui a des Conflits: Makefile en deux fois.
Quelqu'un peut s'il vous plaît signaler la façon de faire ces deux actions dans un moyen plus simple? Grâce
- J'ai à vous le donner comme un de trois ans+ git en ligne de commande de l'utilisateur je trouve cela incroyablement difficile à faire à partir de la mémoire. Il devrait vraiment être intégrées par défaut.
Vous devez vous connecter pour publier un commentaire.
La solution est très simple.
git checkout <filename>
essaie d'extraire le fichier de l'indice, et donc pas de fusion.Ce que vous devez faire est (c'est à dire la caisse un commettre):
À la caisse de votre propre version vous pouvez utiliser un de:
ou
ou
À la caisse de l'autre version vous pouvez utiliser un de:
ou
ou
Vous aussi, vous avez besoin pour exécuter 'ajouter' pour le marquer comme résolu:
--ours
et--theirs
signifie exactement le contraire de ce que je intuitivement pensé lors de l'essai de cette commande...git show
– ce saute saut de ligne de la normalisation.git show :3:filename
.. Le seul moyen que j'ai été en mesure d'accepter le serveur de fichier est en tapantgit checkout BRANCH_MERGED_IN -- file
.. Est-ce pas exact? J'ai essayégit checkout --theirs -- file
et rien ne se passe..:3:
être similaire àC:
...git show :n:file
commande ne fonctionne pas dans Windows!? Je ne suis pas certain que je comprends pleinement la:n:file
partie, mais je n'arrive pas à faire quoi que ce soit, à l'exception d'une erreur (aussi essayé 1 et 2):> git show :3:css\myfile.css fatal: Path 'css\myfile.css' does not exist (neither on disk nor in the index)
. La bonne nouvelle est que la première commande ne fonctionnent tout aussi bien.:n:
syntaxe je dois utiliser le complet ou relatif (linux-style avec le précédent '.') chemin de la commande et que je dois utiliser de l'avant-barres obliques aussi. par exemple:> git show :3:./css/myfile.css
fonctionne! Je peux rediriger/pipe pour le même nom de fichier comme dans l'exemple ou autre.. Merci pour l'aide!git show ':3:css/style.css'
slash (pas de barre oblique inverse)?--
est utilisé par Git pour séparer les révisions (les noms de branches etc.) à partir de noms de chemin d'accès (les noms de fichiers, de répertoires). Il est important si Git ne peut pas décider si un nom est le nom de la branche ou du nom de fichier. Ce qui suit POSIX (ou GNU) convention d'utiliser le double tiret pour séparer les options d'arguments (les noms de fichiers).git checkout test-branch -- <filename>
a été utile. Merci.theirs
/ours
peut apparaître échangé si vous êtes à la résolution des conflits dans le contexte d'un rebase opération. Parce que cela fonctionne en vérifiant la branche cible puis de l'écrémage s'engage à partir de "votre" branche sur la cible, la modification entrante ("leur") est à partir de "votre", une branche, et la branche est la branche cible ("les nôtres").