Comment puis-je voir ce que je suis sur le point de pousser avec git?
Est-il un moyen pour voir ce qui pourrait être poussé si je fait un git push
commande?
Ce que je nous vois est quelque chose comme les "Fichiers Modifiés" onglet de Github du "pull request" caractéristique. Quand je demande de pull, je peux regarder et de voir ce qui va être tiré à si ils accepter ma demande d'extraction:
Ligne de commande est OK, mais je préfère une sorte de GUI (comme la capture d'écran ci-dessus).
- Connexes: stackoverflow.com/questions/3080509/...
- De nombreuses questions/réponses, en voici un autre: stackoverflow.com/questions/2176278/preview-a-git-push/...
Vous devez vous connecter pour publier un commentaire.
Pour une liste de fichiers à être poussé, exécutez:
exemple:
Pour le code diff des fichiers à être poussé, exécutez:
Pour voir le chemin complet des fichiers de fichiers à modifier, exécuter:
Si vous voulez voir ces différences dans une interface graphique, vous aurez besoin de configurer git pour que. Voir Comment puis-je voir git diff' sortie avec un visual diff programme?.
HEAD
, pas sur l'index, à l'encontre de l'origine (git diff origin/master HEAD
). Comparaison de l'indice donnera les mêmes résultats que si, et seulement si vous n'avez pas de changements mis en scène pour la validation. Si vous avez des modifications mises en scène, ils seront inclus dans le diff, mais clairement de ne pas être poussé, car ils n'ont pas été commis encore.git diff --stat origin/master HEAD
est la réponse correcte.git diff --cached [remote/branch]
fait le truc 🙂--stat
option dansgit diff
.git push
il n'est PAS garanti que la liste des fichiers produits par les précédentsgit diff
est ce qui va êtrepush
ed. Réponse ignore complètement le concept de commettre.diff
mentionnés ici, et aucun n'a produit aucune sortie. maispush --dry-run
ne montrent06b7b81..ffa79a8 master -> master
git diff
sans gamme toujours diffs votre le répertoire de travail pour quelque chose, avec cache il diffs au moins ce sera commise et que la prochaine fois, mais jamais de ce qui doit être déplacée.push --dry-run
de Brian est le seul utilisable réponse jusqu'à présent, une autre serait degit diff --stat HEAD origin/master
git diff --cached
je crois impliqueHEAD
à la fin - au moins, ça marche pour moi. Vous pouvez également fairegit diff --cached file
.git diff --stat
, cependant, n' pas l'air de fonctionner.)git status
pour déterminer la valeur de[remote/branch]
origin/branch
), de sorte qu'il peut ne pas refléter tous les commits qui ont été poussés à distance. Toujours exécutergit pull origin
d'abord pour s'assurerorigin/branch
est à jour. (Pour en faciliter l'explication, si la même commet l'avait poussé à distance d'une autre branche, mais pas tiré vers le bas pour votre travail et les pensions, il serait toujours montrer, mais elles n'ont pas besoin d'être poussé. Ou pire, si il y a des conflits de modifications dans le repo distant, ce ne serait pas vous donner aucun avertissement.)Il y a toujours de l'exécution de la sec:
Il va tout faire sauf pour l'envoi des données.
Si vous voulez une vue graphique que vous avez un tas d'options.
Tig et la gitk script qui viennent avec git la fois pour l'affichage de la branche courante de votre copie locale et de la direction générale de la télécommande ou de l'origine.
De sorte que tout s'engage à vous faire qui sont postérieurs à l'origine sont les commits qui sera poussé.
Ouvrir gitk de la coquille, tandis que dans la branche que vous souhaitez pousser en tapant
gitk&
, puis de voir la différence entre ce qui est de la télécommande, et ce que vous êtes sur le point de pousser à la télécommande, sélectionnez votre local unpushed s'engager et cliquez à droite sur la télécommande et choisissez "Diff this -> selected":git diff --stat HEAD origin/master
ougit diff HEAD origin/master
. L'Important est la CHEF, sinon vous inclure uncommited changements dans vos diffgit push --dry-run
est qu'il nécessite toujours la permission d'écrire à la télécommande. Donc, si vous avez un clone sans l'autorisation de pousser en amont, mais vous aimeriez voir à quoi ressemblent vos locaux unpushed changements sont,--dry-run
ne le fera pas.branch
etorigin/branch
, je voudrais aller avec Ionuț G. Stan réponse, puisqu'il ne requiert pas de connexion à la télécommande repo. Cela peut être bon ou mauvais, selon ce dont vous avez besoin.À tout simplement la liste de tous les commits en attente d'être poussé:
(c'est celle que vous vous en souvenez)
git cherry -v heroku/remote
dans le cas où vous conserver votre code en plus d'une télécommande.Vous voulez probablement pour exécuter
git difftool origin/master...
. qui devrait montrer le unifiée diff de ce qui est sur votre branche courante qui n'est pas sur l'origine/la branche principale, et de l'afficher dans le graphique outil de comparaison de votre choix. Pour être le plus up-to-date, exécutezgit fetch
premier.git difftool -d origin/master
, J'ai mon difftool mis à fondre, de sorte qu'il fonctionne très bien, merci!git difftool -d
est bien mieux, merci Verseau Pouvoir. Le seul problème est qu'il ne détecte pas les fichiers qui ont été déplacés et les affiche comme supprimé et ajouté à la place.Une façon de comparer votre version locale avant de le pousser sur la télécommande repo (sorte de pousser dans l'exécution de la sec):
Utilisation TortoiseGit:
Clic droit sur le dossier racine du projet > TortoiseGit > Diff avec la version précédente >
pour la Version 2 choisissez
refs/remotes/origin/master
Essayer
git diff origin/master..master
(en supposant queorigin/master
est votre en amont). Contrairement àgit push --dry-run
, cela fonctionne encore, même si vous n'avez pas la permission d'écrire à l'amont.Utilisation
git gui
, là, vous pouvez voir une liste de ce qui a changé dans votre validation. Vous pouvez également utilisergitk
ce qui fournit une interface simple pour reflogs. Il suffit de comparer entreremotes/...
etmaster
à voir, ce sera poussé. Il fournit une interface similaire à votre capture d'écran.Les deux programmes sont inclus dans le dépôt git.
gitk --all
vous obtenez une liste complète de tous les commentaires. Maintenant, vous pouvez comparer l'état actuel de vos dev-direction avec votre télécommande pour pousser.Pour voir quels fichiers sont modifiés et afficher le code de changements par rapport à la
master
direction générale, vous pouvez utiliser:NOTE: Si vous utilisez l'un de l'Ide, Ide, puis vous pouvez cliquez-droit sur votre projet de niveau supérieur, sélectionnez Git > la Comparer avec la direction de la >, et chercher l'origine vous souhaitez par exemple
origin/master
. Dans l'arborescence de fichiers qui apparaît, vous pouvez double-cliquer sur les fichiers pour voir un visual diff. Contrairement à l'option de ligne de commande ci-dessus, vous pouvez modifier vos versions locales de la diff de la fenêtre.Si vous utilisez Mac OS X, je recommande que vous obtenez Tower, c'est un merveilleux programme qui a fait affaire avec Git un plaisir pour moi. J'ai maintenant plus nécessaire de mémoriser les commandes du terminal et il offre une excellente interface graphique pour visualiser, suivre et résoudre les différences dans les fichiers.
Et non, je ne suis pas affilié avec eux, je viens d'utiliser leur logiciel, et l'aime vraiment.
http://www.git-tower.com/
Vous pouvez lister les commits par:
Et comparer ensuite avec la commande suivante, où le nombre de ^ est égal au nombre de commits (dans l'exemple 2 commits):
Juste pour ajouter mon grain de sel...
Je voulais mettre en œuvre lors de l'exécution d'emplois dans un gitlab pipeline sur un gitlab coureur.
La meilleure façon de le faire était d'utiliser ce script:
Aussi dans mon cas, je voulais filtrer les fichiers par extension, pour parvenir à cela, j'ai utilisé:
Après cela, vous pouvez par exemple transmettre cette liste quelque part d'autre, un linter peut-être 😉
Espère que cela aidera quelqu'un.