2017-03-23 2 views
1

je les commits suivants dans l'histoire de ma branche sujet:écrémer git et rebasage échoue

(git lolashortcut described here)

[email protected]:~/projects/infoodle$ git lola 
* 0c61616 (refs/stash) WIP on receipt_preview_sprint_to_finish: 3678770 progress 
|\ 
| * 332dc8a index on receipt_preview_sprint_to_finish: 3678770 progress 
|/ 
* 3678770 (HEAD -> receipt_preview_sprint_to_finish, origin/receipt_preview, receipt_preview, integration) progress 
* ed2ca95 Merge branch 'receipt_preview' of bitbucket.org:richinnz/infoodle-web into receipt_preview 
|\ 
| * 0743777 preview stuff 
| * 03a2279 be able to ahndle both rebatable and non-rebatable 
| * 1ff3d6c better sample number for preview of receipts 
| * 0a0f3ed handle missing {tax receipt} replacement 
| * 0ce35c9 remove language files, should not be in git 
| * 5cc2b61 identify first key of transaction detail correctly to get data out of transaction record 
| * def1132 sort out preview spinner 
| * 5622f85 typo when pasting code from master 
* | 30ef79c (origin/receipt_search, receipt_search) merge transactiontranslator back into receiptconfigurator 
* | 367685c progress transferring sql into configurator 
* | 84c71b1 Merge remote-tracking branch 'origin/receipt_search' into receipt_search 
|\ \ 
| * | 149e5f0 Progress on receipt screen search/ sort/ detail 
* | | e927458 processing receiptstodo query into receiptList class, process SQL where parts into ReceiptConfigurator 
* | | 80c7c06 list loaded from ajax complete 
* | | 99b6ed8 only use global.min when not in debug mode 
* | | bf15181 rename 
* | | 43fd17a re-indent 
* | | 57e38a0 re-indent 
* | | c4e7588 save work 
| |/ 
|/| 
* | 867c918 remove confusing commented out stuff 
* | fec8c04 text tweak in phpdoc 
|/ 
* 75a78ce fix mismatch of function parameter typing after merge 

Fondamentalement, je suis d'origine accidentellement fusionné/receipt_search et nous avons eu changement de plan en ce qui concerne l'obtention de cette branche de fonctionnalité terminée.

Je veux commencer maintenant avec COMMIT 75a78ce (en bas) et appliquer

0743777 preview stuff 
03a2279 be able to ahndle both rebatable and non-rebatable 
1ff3d6c better sample number for preview of receipts 
0a0f3ed handle missing {tax receipt} replacement 
0ce35c9 remove language files, should not be in git 
5cc2b61 identify first key of transaction detail correctly to get data out of transaction record 
def1132 sort out preview spinner 
867c918 remove confusing commented out stuff 
fec8c04 text tweak in phpdoc 

dans l'ordre inverse sur une nouvelle branche.

1) J'ai essayé écrémer git:

git checkout 75a78ce 
git checkout -b receipt_preview_sprint_to_finish 
git cherry-pick fec8c04..0743777 

Cela échoue lors de l'application de la deuxième commettras:

On branch receipt_preview_sprint_to_finish 
You are currently cherry-picking commit 867c918. 
    (fix conflicts and run "git cherry-pick --continue") 
    (use "git cherry-pick --abort" to cancel the cherry-pick operation) 

Unmerged paths: 
    (use "git add <file>..." to mark resolution) 

     both modified: code/classes/class.receipting.php 

Je ne comprends pas pourquoi il y aurait un conflit.

2) Ensuite, j'ai essayé rebasage:

git branch -f integration 0743777 
git rebase --onto receipt_preview_sprint_to_finish fec8c04~1 integration 

    First, rewinding head to replay your work on top of it... 
    Fast-forwarded integration to receipt_preview_sprint_to_finish. 
    [email protected]:~/projects/infoodle$ git log 
    commit 3678770d92b2fd00797d2cda2875c090fc701a1e 
    Author: Jochen Daum <[email protected]> 
    Date: Thu Mar 23 10:48:42 2017 +1300 

     progress 

    commit ed2ca95096690c4c419ef491ad65c3c5020120e5 
    Merge: 30ef79c 0743777 
    Author: Jochen Daum <[email protected]> 
    Date: Thu Mar 23 08:26:23 2017 +1300 

     Merge branch 'receipt_preview' of bitbucket.org:richinnz/infoodle-web into receipt_preview 

     # Conflicts: 
     # code/ajax/accountcode_functions.php 
     # code/ajax/subinclude/person.php 
     # code/styles/ennz/admin_donationreceipts.tpl.php 
     # code/styles/ennz/header.tpl 

Mais ces 2 commits je ne voulais pas spécifiquement.

Qu'est-ce que je fais mal?

+0

Sur la commande 'cerise pick', vous avez vraiment écrit fec8c04 ..0743777 ou avez-vous épelé chaque commit individuellement? Je pense que vous devez les écrire tous individuellement, sauf si vous voulez une série de commits. –

Répondre

3

Le problème avec le git cherry-pick est simple:

Je veux commencer maintenant avec COMMIT 75a78ce (en bas) et appliquer [engage à commencer par, et notamment, fec8c04, alors j'ai couru]

git cherry-pick fec8c04..0743777 

La notation X..Y Git signifie « tous les engage accessible à partir Y, hors tous commits accessibles depuis X ". Cela exclut X lui-même. Cela rappelle les intervalles à demi ouverts en maths, où [3..5] signifie 3, 4 et 5 mais (3,5) signifie seulement 4 et 5, ou [3, 5) signifie 3 et 4 seulement. (Ceci est écrit d'autres façons, comme] 3, 5] dans certaines notations, et les commits ne sont pas vraiment linéaires de cette façon - nous faisons en fait la soustraction, plutôt que des intervalles - mais l'idée ici est d'agir comme un rappel X..Yne comprend jamais commettre lui-même X)

Par conséquent, ce que vous avez besoin est.

git cherry-pick 75a78ce..0743777 

ou:

git cherry-pick fec8c04^..0743777 

pour inclure fec8c04 commettre.

Il convient de noter que est bien que ce n'est pas tout à fait raison:

git checkout 75a78ce 
git branch -b receipt_preview_sprint_to_finish 

La deuxième commande doit être git checkout -b, pas git branch -b. Mais git branch -b vous donnerait une erreur donc je suppose que vous avez effectivement utilisé git checkout -b. :-)

(La méthode git rebase ne va pas bien fonctionner comme il choisira beaucoup trop de commits à copier dans une séquence linéaire.)

+0

Merci, excellente réponse. J'ai édité par question re git branche -b vs git checkout -b – jdog