Comment créer un patch adapté à l'examen dans un creuset?
git diff branch master --no-prefix > patch
Cela ne génère que 3 lignes de contexte. Alors je fais ce qui suit
git diff --unified=2000 branch master --no-prefix > patch
Espérons que tous les fichiers auront moins de 2000 lignes. Existe-t-il un moyen de dire à git d'inclure toutes les lignes dans le fichier pour patch sans avoir à spécifier le maximum de lignes?
Réponses:
Je sais que c'est vieux, mais je n'aime pas non plus les solutions codées en dur, alors j'ai testé ceci:
L'utilisation de -U semble être la seule façon d'aborder le problème, mais l'utilisation d'un nombre de lignes promet que cela fonctionnera même pour un petit changement dans un très gros fichier.
la source
<
n'est pas nécessaire.git diff -U$(wc -l MYFILE) MYFILE
git diff -U$(wc -l MYFILE | awk '{print $1}') MYFILE
est une meilleure réponse qui analyse correctement la sortie dewc
en obtenant uniquement le nombre de lignes sans espace, sans compter sur la sortie sans guillemets d'un sous-shell pour créer deux arguments, et fonctionne sur macOS / BSD.Cela semble fonctionner assez bien:
Avec la mise en garde:
la source
-U
option que vous suggérez est la même que celle--unified=
utilisée par le demandeur. La seule différence est que vous spécifiez moins de lignes de contexte, 1000, que le demandeur utilisé, 2000. @balki voulait savoir comment augmenter le nombre à l'infini, mais vous suggérez de réduire le nombre de moitié. Pourquoi?git show
!--no-prefix
option supprime les préfixes de destination «/ a /» et «/ b /» qui apparaissent par défaut. (page liée)Remarque: l' annonce git1.8.1rc1 (8 décembre 2012) comprend:
cela pourrait aider, ici, à générer un contexte plus complet.
la source
J'ai eu de l'inspiration et j'ai donc ajouté un alias git.
Mettre à jour:
Juste trouvé "git df" ne fonctionne pas parfois, en raison du changement de répertoire lors de l'exécution de l'alias git. (Voir les alias git fonctionnent dans le mauvais répertoire ). Voici donc la version mise à jour:
la source
Cela a fonctionné pour moi sur macOS:
voir "Comment couper les espaces d'une variable Bash?"
la source
Les solutions précédemment acceptées ne fonctionnent pas pour moi lors de la visualisation d'un fichier / commit spécifique (l'
-U
option semble perturber l'analyse de rev / chemin), mais--inter-hunk-context=
fonctionne dans ce cas surgit version 2.24.0
:Si vous ne connaissez pas la taille du fichier, vous pouvez bien sûr le trouver avec
wc -l
au lieu de le coder en dur:la source