web-dev-qa-db-fra.com

show commits depuis la création de la branche

Est-il possible de voir avec git log ou une autre commande uniquement les commits ajoutés après la création de la branche?

usage: git log [<options>] [<since>..<until>] [[--] <path>...]
   or: git show [options] <object>...

    --quiet               suppress diff output
    --source              show source
    --decorate[=...]      decorate options
50
lurscher

Utilisez trois périodes pour faire référence à la validation à laquelle la deuxième branche a divergé de la première ou, dans ce cas, votre branche a divergé de maître:

git log master...<your_branch_name>

Assurez-vous d'utiliser trois points pour ce cas.

Note latérale: Vous pouvez également laisser votre nom de branche sans git référence automatiquement le pointeur HEAD dans ce cas, par exemple:

git log master...

est équivalent à mon exemple précédent. Cela fonctionne partout où une comparaison de commit est disponible.

52
Matt Meng

La documentation complète est disponible ici: https://www.kernel.org/pub/software/scm/git/docs/gitrevisions.html

Supposons que vous ayez un dépôt qui ressemble à ceci:

base  -  A  -  B  -  C  -  D   (master)
                \
                 \-  X  -  Y  -  Z   (myBranch)

Vérifier l'état du repo:

> git checkout master
Already on 'master'
> git status ; git log --oneline
On branch master
nothing to commit, working directory clean
d9addce D
110a9ab C
5f3f8db B
0f26e69 A
e764ffa base

et pour myBranch:

> git checkout myBranch
> git status ; git log --oneline
On branch myBranch
nothing to commit, working directory clean
3bc0d40 Z
917ac8d Y
3e65f72 X
5f3f8db B
0f26e69 A
e764ffa base

Supposons que vous soyez sur myBranch et que vous ne souhaitiez modifier que SINCE master. Utilisez la version à deux points:

> git log --oneline master..myBranch
3bc0d40 Z
917ac8d Y
3e65f72 X

La version à trois points donne tous les changements de la pointe du maître à la pointe de myBranch. Notez cependant que le commit commun B n'est pas inclus:

> git log --oneline master...myBranch
d9addce D
110a9ab C
3bc0d40 Z
917ac8d Y
3e65f72 X

VEUILLEZ NOTER: git log et git diff BEHAVE DIFFERENTLY! Le comportement n'est pas exactement opposé, mais presque:

> git diff master..myBranch
diff --git a/rev.txt b/rev.txt
index 1784810..e900b1c 100644
--- a/rev.txt
+++ b/rev.txt
@@ -1 +1 @@
-D
+Z

> git diff master...myBranch
diff --git a/rev.txt b/rev.txt
index 223b783..e900b1c 100644
--- a/rev.txt
+++ b/rev.txt
@@ -1 +1 @@
-B
+Z

Ainsi, la version à deux points montre le diff de la pointe du maître (c’est-à-dire D) à la pointe de myBranch (Z). La version à trois points montre la différence entre la base de myBranch (B) et le sommet de myBranch (Z).

48
Alan Thompson

Si vous êtes sur la branche que vous avez créée:

git log master..
11
Shaun Luttin

Oui, il est possible de comparer votre "nouvelle" branche avec la branche principale (communément appelée "maître"):

git log master..<your_branch_name>

Bien sûr, remplacez <your_branch_name>

3
Sandro Munda

Je peux me tromper mais je ne pense pas qu’une des réponses soit exactement demandée dans le PO, c’est pourquoi j’ai voulu ajouter une nouvelle réponse. Je pense que c’est exactement la même question que je l’ai depuis, car c’est très facile à faire dans d’autres systèmes de contrôle de source.

J'ai le suivant dans le MAÎTRE: 

'développer' | -> 'GP603'

Dans Origin (mon système local), j'ai: 

'GP603' [CLONED de la branche distante/GP603]

J'ai ensuite effectué 2 commits différents. Première modification du fichier de validation X. Deuxième modification de validation des fichiers X et Y. Un jour plus tard, je voulais simplement valider mon hypothèse sur l'état de la branche locale Origin/GP603. C’est ce que j’ai fait pour confirmer qu’il n’y avait que 2 commits dont je me souviens avoir fait (qui étaient en réalité les 2 seuls commets sur la branche)

$ git log Origin/GP.603 ...

(Commit 2) Commit b0ed4b95a14bb1c4438c8b48a31db7a0e9f5c940 (HEAD -> GP.603) Auteur: xxxxxxx.__Date: Mer xxxxx -0400

1. Fixed defect where the format of the file names and paths were being added to HashTable in such a way that they would never be matched in any comparison.  This was an
defect causing older failed files to never be moved to the correct directory (WindowsServiceApplication.cs)

2. Removing worthless and contextless message as it does nothing but clog the log with garbage making it harder to read (DinoutFileHandler.cs)

(Commit 1) Commit 2c4541ca73eacd4b2e20d89f018d2e3f70332e7eAuteur: xxxxxxx.__date: mardi 21 octobre xxxxx -0400

In ProcessFile() function need to perform a .ToLower() on the file path string when adding it o the failedFiles collection.
0
Ethan Hodys