2013-03-01 31 views
33

Sono in una squadra di tre; due stanno lavorando localmente e sto lavorando sul server.Usa nome utente/password con git e bitbucket

Il mio collega ha impostato l'account, ma mi ha dato i privilegi completi del repository.

ho impostato il mio nome utente e-mail in git:

git config --global user.name "bozdoz" 
git config --global user.email [email protected] 

e sono identici a mio nome utente e-mail su bitbucket.org.

Ma quando ho tirare o spingere al repository indica il loro nome utente nel prompt:

Password for 'https://[email protected]': 

sono stato in grado di ottenere un prompt per la password dopo aver tentato di tirare indicando l'URL con il mio nome utente:

git pull https://[email protected]/path/repo.git 

e ha detto di essere aggiornato; e poi quando ho spinto, ha detto no-fast-forward.

ho letto che ho bisogno di specificare il ramo, ma non so come fare, che in una dichiarazione spinta mentre sto anche specificando l'URL repo:

git push https://[email protected]/path/repo.git 

Sono in grado di tirare e spingo se il mio collega è in giro e può inserire la sua password. Ma questo lo sta elencando anche come autore della spinta, e non io.

Come posso tirare e passare a un ramo repository come nome utente personale?

risposta

57

Run

git remote -v 

e verificare se l'URL del tuo origine ha il nome utente tua del collega hardcoded in là. In tal caso, sostituirlo con il proprio:

git remote set-url origin <url-with-your-username> 
+1

È fantastico. Grazie mille. Ha funzionato perfettamente Nuovo su StackOverflow? Mi piacerebbe darti una certa reputazione se ti interessa avere un po '. Posso assegnare una taglia in 2 giorni. – bozdoz

+0

JFYI: a) '' non esiste - pronti contro termine deve essere biforcuta prima b) spinta a forcella non cambia (ovviamente) origine –

+0

@LazyBadger Non sei sicuro di quello che vuoi dire. La sua risposta ha funzionato ...? – bozdoz

2

Sei sicuro di non spingere su SSH? Forse controlla l'e-mail associata alla tua chiave SSH in bitbucket se ne hai uno.

+0

@bozdoz - stop! ssh: // di http: //? –

+0

@LazyBadger Non ho idea di cosa tu stia parlando. – bozdoz

3

Beh, è ​​parte della filosofia BitBucket e del flusso di lavoro:

  • Repository può avere un solo utente: proprietario
  • Per i conti ordinari (per l'utente finale di collaborazione aspettiamo un flusso di lavoro "fork-pull request"

ovvero non è possibile (nel solito caso) eseguire il commit in un deposito estero con le proprie credenziali.

Hai due possibili soluzioni:

  1. BB-way "Classic": pronti contro termine forcella (ottenere proprietà di si repository), apportare le modifiche, invia una richiesta di pull di origine repo
  2. Create "Team", aggiungi account utente come membri del team, crea il proprietario del repository del team - in questo caso per questo repository "Shared central" ogni membro del team può spingere con le proprie credenziali - ispezionare il repository thg e TortoiseHg Team, proprietario di questo repository, come campioni
+0

Come indicheremmo quale utente sta spingendo in una squadra? Dobbiamo impostare user.name ogni volta? – bozdoz

+0

@bozdoz: non combinare l'identità (utilizzata per il commit locale e trasferita come è in BB) con l'autorizzazione, che è necessario eseguire su push. Devi inserire e memorizzare le tue credenziali (BB-username e password, non l'utente di Git. * Parametri) –

+0

Come inserisci e memorizzi le credenziali al di fuori di git config? @lazybadger – bozdoz

10

Il prompt:

Password for 'https://[email protected]': 

suggerisce, che non si utilizza https ssh. Gli URL SSH iniziano con git @, ad esempio:

[email protected]:beginninggit/alias.git 

Anche se si lavora da soli, con un unico repo che si possiede, l'operazione:

git push 

causerà:

Password for 'https://[email protected]': 

se l'origine remota inizia con https.

Controllare il telecomando con:

git remote -v 

Il telecomando dipende git clone. Se si desidera utilizzare clone ssh repo utilizzando il suo URL ssh, per esempio:

git clone [email protected]:user/repo.git 

vi consiglio di iniziare con git push e git pull per il vostro repo privata.

Se funziona, avete due joices suggerito da Lazy Badger:

  • Pull richieste
  • Il lavoro di squadra
+0

Immagino che sto usando HTTPS e non SSH, secondo la tua risposta. Grazie per l'aiuto. Il suggerimento di Erik di alterare il file di configurazione ha infine risolto il problema. Per i repository futuri il nostro team farà il metodo del team di bitbucket. – bozdoz

43

ho pensato che avrei dovuto condividere la mia soluzione, dal momento che non ero in grado trovarlo ovunque, e l'ho capito solo attraverso prove ed errori.

In effetti sono riuscito a trasferire la proprietà del repository a a team on BitBucket.

Non aggiungere l'URL remoto che BitBuckets suggerisce:

git remote add origin https://[email protected]/teamName/repo.git 

Invece, aggiungere l'URL remoto, senza il tuo username:

git remote add origin https://bitbucket.org/teamName/repo.git 

In questo modo, quando vai a prendere o spingere su un repository, ti chiede il tuo nome utente, quindi la tua password: chiunque nel team ha accesso ad esso con le proprie credenziali. Questo approccio funziona solo con i team su BitBucket, anche se puoi gestire le autorizzazioni degli utenti sui repository proprietari.

+0

Sto provando questa soluzione, ma usando 'git remote set-url origin 'invece di' git remote add origin'. Invece di ottenere una richiesta di nome utente sto ottenendo 'L'URL richiesto restituito l'errore: 401 non autorizzato mentre accessing' – Anthony

+0

stai usando https? @Anthony – bozdoz

+0

Sì, sto usando https. 'Origine git remote set-url https://bitbucket.org/XXX/YYY.git' seguito da 'git pull' quindi restituisce' error: L'URL richiesto ha restituito l'errore: 401 Non autorizzato durante l'accesso a https: // bitbucket.org/XXX/YYY.git/info/refs'. Rimettendo il nome utente, tutto torna alla normalità. – Anthony