2012-12-20 17 views
5

Ho usato GIT per un paio di settimane e sto cercando di capire come cambiare ramo senza commettere file. Questo è quello che ho fatto.Come passare le diramazioni in eclissi senza commutare le modifiche

  1. Clonato un repository git e un ramo master locale.
  2. Creato un nuovo ramo locale (Branch2) che si basa su un ramo remoto.
  3. Effettuate le modifiche a 2 file nel ramo principale.

Quello che voglio fare ora è passare da master a Branch2. Le modifiche apportate al ramo principale sono solo a scopo di sviluppo locale e non dovrebbero mai essere eseguite. Ma quando provo a farlo in eclissi (cioè faccio doppio clic sul ramo locale su cui cerco di passare), continua a dirmi che ci sono delle modifiche non vincolate e ho bisogno di commit, stash o reset.

Qualcuno può dirmi come posso apportare una modifica a un file locale e devo git ignorare questa modifica in modo che non venga richiesto questo messaggio?

+1

Di solito se si have "per scopi dev solo e dovrebbe "-files, hai un file template come' foo.bar.dist', sul setup lo copi in 'foo.bar' e ovviamente'/foo.bar' è in '.gitignore'. La ragione: tu _will_ la commit prima o poi, se non la escludi esplicitamente. – KingCrunch

+0

Assicurati di aver compreso "rami locali" e le funzionalità distribuite di Git. Il lavoro di sviluppo in corso dovrebbe essere in una filiale locale. Se e una volta pronto, puoi unire/spingere cose a un telecomando. Se non vuoi pubblicare, tienilo locale. Devi aderire a "impegnarti presto, impegnarti spesso" come best practice.Git stash è potente, ma ramificarsi è ancora di più. – gertvdijk

risposta

3

Se non si desidera che le modifiche vengano rese pubbliche, è sufficiente immetterle nel proprio ramo di funzione e non nel ramo principale.
È possibile creare un nuovo ramo, assegnargli un nome che rifletta le modifiche, forse il prefisso è con qualcosa di simile a "experimental-" e quindi eseguire il commit su tale ramo prima di passare all'altro ramo.

È possibile utilizzare git stash per memorizzare le modifiche o utilizzare git stash per assegnarle direttamente a un nuovo ramo come indicato da Ege Akpinar.

+1

Alcuni commenti davvero utili qui. Grazie. – Eddie

+0

Alcuni commenti davvero utili qui. Grazie. Quindi, in sostanza, non dovrei apportare modifiche al ramo master se non desidero eseguirne il commit. Dovrei farlo in un nuovo ramo di funzionalità. Quindi, se creo una nuova diramazione diciamo, MyNewBranch, e voglio incorporare queste modifiche al master, è tanto semplice quanto eseguire le modifiche in MyNewBranch e quindi fare una fusione vale a dire git commit -a "modifica descrizione " git checkout master git merge MyNewBranch @PeterSmith – Eddie

+0

Sì, puoi semplicemente unire il tuo ramo al master. Inoltre puoi rebase il tuo branch se il master branch ha nuovi commit e vuoi assicurarti di non ottenere conflitti di merge. Assicuratevi di usare 'git merge --no-ff' per conservare la cronologia del ramo se state unendo dopo un rebase. –

4

Dai un'occhiata a git stash. Stash ti consente di memorizzare modifiche non salvate.

Opzione 1

git stash 
git checkout -b Branch2 

verranno memorizzate le modifiche in git (localmente). Quando si desidera applicare nuovamente tali modifiche, verrà effettuato il git stash pop e verranno applicate tali modifiche.

Opzione 2

git stash 
git stash branch temporarybranch 

Questo richiederà le modifiche non impegnati in un nuovo ramo e tenerli lì per voi. Rispetto all'opzione precedente, questo consente di mantenere questi rami sul server premendo questo nuovo ramo.

Speranza che aiuta

+1

+1 per 'git stash branch ' Non sapevo che fosse possibile! –

5

Nota: se avete bisogno di riporre un work in progress da Eclipse, Egit ora supports stash:

stash in EGit

Problemi correlati