2013-09-25 18 views
5

Attualmente sto lavorando a un progetto di team, con molte filiali remote. E ho clonato il progetto dal ramo del nostro master. Ora, che ho apportato modifiche a questo progetto localmente, vorrei spingerlo, ma per evitare di spingerlo al ramo remoto principale del progetto, vorrei creare un nuovo ramo localmente e spingere questo ramo su remoto .Come passare a Git con attenzione in una nuova filiale

L'idea generale, non è quella di distruggere la mia versione locale del progetto nel progetto remoto principale. Ho solo bisogno che il mio ramo sia separato.

Quindi, sto cercando di indovinare io per prima fare

git checkout -b my_new_branch

poi

git push -u origin my_new_branch

Sarà questa garanzia, che il mio ramo non verrà miscelato con chiunque?

risposta

1

Nell'esempio si spinge un ramo locale al repository remoto. In questo modo il ramo verrà separato dal ramo master.

Quindi a meno che altre persone volontariamentepush nel ramo non otterrà mescolato con chiunque.

+0

Quindi, fare un telecomando locale e spingerlo nel modo in cui ho dichiarato non causa problemi agli altri? btw: Possiamo vedere il ramo locale quando eseguiamo 'git remote show origin 'nella lista delle remote origini? Perché non posso vedere il mio. – ANW

5

L'opzione -u imposta i valori predefiniti nel repository per tracciare my_new_branch su origin. Pertanto, sia push sia pull utilizzeranno, per impostazione predefinita, origin e my_new_branch. Successivamente non sarà necessario fornire tali argomenti. Ecco un esempio:

$ mkdir foo; cd foo; git init; touch README; git add README; git commit -m 'README' 
Initialized empty Git repository in /private/tmp/foo/.git/ 
[master (root-commit) 03f3d46] README 
0 files changed 
create mode 100644 README 

$ cd ..; git clone foo bar; cd bar 
Cloning into 'bar'... 
done. 

$ git checkout -b my-br 
Switched to a new branch 'my-br' 

$ touch INSTALL; git add INSTALL; git commit -m 'INSTALL' 
[my-br 627d6db] INSTALL 
0 files changed 
create mode 100644 INSTALL 

$ git push -u origin my-br 
Counting objects: 3, done. 
Delta compression using up to 16 threads. 
Compressing objects: 100% (2/2), done. 
Writing objects: 100% (2/2), 245 bytes, done. 
Total 2 (delta 0), reused 0 (delta 0) 
Unpacking objects: 100% (2/2), done. 
To /tmp/foo 
* [new branch]  my-br -> my-br 
Branch my-br set up to track remote branch my-br from origin. 

$ touch Makefile; git add Makefile; git commit -m 'Makefile' 
[my-br f2390c1] Makefile 
0 files changed 
create mode 100644 Makefile 

$ git push 
Counting objects: 3, done. 
Delta compression using up to 16 threads. 
Compressing objects: 100% (2/2), done. 
Writing objects: 100% (2/2), 255 bytes, done. 
Total 2 (delta 0), reused 0 (delta 0) 
Unpacking objects: 100% (2/2), done. 
To /tmp/foo 
    627d6db..f2390c1 my-br -> my-br 

Si noti che la finale git push utilizza le impostazioni predefinite appropriate. Il repository remoto principale è protetto dal repository che lo distrugge.

1

Come altri hanno sottolineato. Hai assolutamente ragione.


Giusto per riassumere tutti i dettagli.

Quindi, sto cercando di indovinare io per prima faccio

git checkout -b my_new_branch 

Questo è l'approccio corretto per creare nuovo ramo con il nome my_new_branch. Stai aggiungendo tutte le modifiche che hai fatto nel ramo master a questo nuovo ramo.

poi

git push -u origin my_new_branch 

Questo poi crea il tuo nuova filiale in origine che viene seguita con la filiale. Lo -u è lo stesso di --set-upstream.Maggiori informazioni in sorprendente risposta per why always git branch --set-upstream.

Da ora in poi è possibile utilizzare git push e git pull sul repository remoto come si desidera con il tuo ramo collegato da repository locale al repository remoto.

Sarà questa garanzia, che il mio ramo non si mescolerà con quello di nessuno?

SI. Il tuo master branch è assolutamente al sicuro dalle tue push. E il tuo ramo è sicuro di codice misto, a meno che qualcun altro non spinga a questo ramo. Se è possibile applicare questa condizione , è possibile affermare che il codice non verrà miscelato con il codice di altri utenti.