2016-06-01 12 views
7

Dopo un git rebase ho risolto i conflitti di unione. Sono confuso dal significato di "aggiunto da noi" allo A.java. Cosa impedisce che venga automaticamente aggiunto/messo in scena come un nuovo file come C.java?Cosa significa git "aggiunto da noi"?

Changes to be committed: 
    (use "git reset HEAD <file>..." to unstage) 

     new file: com/company/C.java 

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

     added by us:  com/company/A.java 
     both modified: com/company/B.java 

versione git 2.5.1.windows.1

+0

Sembra che tu sappia che rebase funziona con ripetuti cherry-pick e che queste operazioni cherry-pick vengono eseguite mentre si cresce un ramo anonimo dal target '--onto' del rebase. Quindi "aggiunto da noi" significa "sono presenti nel nostro attuale comando distaccato HEAD rispetto al merge-base". Sembra strano/sbagliato che questo non sia messo in scena automaticamente per il commit. – torek

+0

Potresti risolvere il mistero? –

risposta

0

"git rebase" è goffo e ottusa, ma oh così utile. Per riassumere ciò che penso stia accadendo nel tuo caso, un "conflitto di fusione" di rebase viene prodotto da "entrambi modificati". Devi scegliere quale mod vuoi - le mod "com/company/B.java" sul loro ramo, le mod sul tuo ramo o qualche combo di entrambi. Il "aggiunto da noi:" ti sta dicendo che "com/company/A.java" è una novità per la tua filiale ed è stata introdotta dal ramo su cui stai ribattendo. Ma a causa del modo in cui git implementa rebase, "noi" è in realtà il loro ramo. Non sono sicuro se questo è contato come un rebase "unione conflitto" a meno che non hai cancellato "com/company/A.java" sul tuo ramo, la destinazione del rebase. In tal caso, sarebbe un "conflitto di unione" di rebase che dovresti risolvere. Per risolvere un simile "conflitto di fusione", ricorda che "noi" è in realtà il loro ramo e "loro" è in realtà il tuo ramo. Blah.

+0

Dovrei dirlo. A volte "git rebase" fa solo un cherry-pick e devi saltarlo facendo 'git rebase --skip'. – BoiseBaked