Git: Comparez Tous les Locaux s'Engage à Distance des Pensions de Version
Je suis un peu nouveau pour Git et ce que je suis en train de faire semble que ce devrait être possible. Fondamentalement, j'ai travaillé hors de clone d'une mise en pension et avons fait quelques modifications locales. Est-il possible de voir la diff de la "somme" de toutes mes modifications et l'origine des pensions de version? Je suppose que cela sera possible car Git va essentiellement faire cela quand je fais un push
.
Voici un exemple de ce que je suis en train de faire: dans gitk je vais voir quelque chose comme ceci:
* - [mybranch] Ajout de la '42' à la fin de answers.txt (de validation)
* Ajoutée "Hello World" à la fin de my.txt (de validation)
* Ajoutée " C#/.NET au début de la my.txt (de validation)
* - <[RemoteRepo]> (original repo j'ai cloné à partir d')
Comment est-ce que je peux voir la différence de la somme de tous mes changements de my.txt
et answers.txt
lorsque comparé à la version originale, j'ai vérifié à partir de RemoteRepo
?
Vous devez vous connecter pour publier un commentaire.
Il y a trois façons ( deux autres provenant d'autres réponses ici )
Première et la seconde sont les mêmes et montrent des changements entre les conseils du maître et maître.
Troisième montre les changements qui ont eu lieu sur le maître puisque branche dernière poussée et je pense que c'est le plus approprié que vous cherchez
origin/master...origin/master
est un ensemble vide? Je pense que vous en quelque sorte foiré la syntaxe lors de l'édition. Vouliez-vous direorigin/master...master
à la place?Les plus prête répondre est
Ce que vous pouvez faire pour obtenir plus de contrôle, est d'utiliser une
git log
annexegit rev-list
:C'est ma méthode préférée et le résultat sera quelque chose comme
Comprendre: décorer et vous obtiendrez quelque chose de proche de gitk, git-gui et gitweb:
PRO ASTUCE 1: Utiliser '
git config alias.lr log --long-option1 --long-option2
' pour une utilisation pratiquePRO ASTUCE 2: Utiliser '
git config color.ui auto
' immédiat dégagement oculaireSi vous voulais tous locaux des têtes (sur toutes les branches locales) par rapport à tous à distance s'engage (sur idem branches):
De laisser sur le pas-pied pour obtenir toutes les révisions individuelles. Dans ce cas, je préfère utiliser les commutateurs montré plus haut (graphique ----gauche-droite)
Fusionne
Si vous voulez voir fusionne clairement, comprendre: limite
Diverses requêtes avancées:
Filtrer les résultats
Git
log
etrev-list
soutien de toute une série de ruse capacité à filtrer, voir la page de manet beaucoup d'autres. Cela devrait vous donner beaucoup à l'effet de levier pour obtenir exactement l'info que vous voulez, avec presque zéro effort
Ce qui est planqué localement?
Ce qui réside dans les caches, mais pas sur les télécommandes (remarque il n'est pas possible de se référer à des caches sur les branches se situant à distance parce que les caches résident dans reflogs, et la reflogs (même pour les branches distantes) témoignent toujours de l'histoire locale[1]):
Tous les (autres) inaccessible s'engage...
Notes
cela inclut tous chuté caches, mais pas les caches
git log $git(fsck --inaccessible --complet --perdu-trouvé |
grep 'commit' | cut-d' ' -f3) \
--no-marche --pas --glob=refs/remotes --oneline --décorer
Script
Pour l'écriture de scripts fins de remplacer l'utilisation de
git log
avecgit rev-list
et vous obtiendrez seulement les valeurs de hachage (et un peu plus de script-prrof robustesse)[1] Voir aussi ma précédente réponse(s) concernant le transfert de caches entre repos:
La plus simple et certainement la plus facile à retenir commande (en général) est-ce que vous voulez, c'est ceci:
Cela montre la diff entre ce que vous avez à l'origine tiré (l'origine) et la branche sur lequel vous travaillez, dont la valeur par défaut
master
.la différence peut être perçue avec
git diff A B
, il va comparer le code de A à B:origin/master
est l'état de la distance de la branche principale, lorsque vous la dernière extraction (ou clone) à partir d'elle,master
, c'est le local de l'état du code, sauf si vous avez changé de branches pour le travail local.pour tout
git diff TÊTE d'origine/"nameofyourbranch"
de fichier spécifique
git diff TÊTE:"nom de fichier" origine/"nameofbranch":"nom de fichier"
git diff origin/branch HEAD -- file