Kaip rasti šaltinio / šeimininko vietą gite ir kaip jį pakeisti?

Aš esu naujas, kad git. Neseniai perkėliau Rails projektą iš Subversion į Git. Aš sekiau pamoką čia: http://www.simplisticcomplexity.com/2008/03/05/cleanly-migrate-your-subversion-repository-to-a-git-repository/

Aš taip pat naudoju „unuddle.com“, kad išsaugotumėte savo kodą. Keičiasi jūsų „Mac“ nešiojamuoju kompiuteriu traukinyje į / iš darbo ir tada spustelėkite juos, kad atjungtumėte, kai turiu tinklo ryšį naudodamas šią komandą:

 git push unfuddle master 

Panaudoju „Capistrano“ ir ištraukiu kodą iš saugyklos be eilės, naudojant pagrindinį filialą.

Neseniai pastebėjau šį pranešimą, kai mano nešiojamojo kompiuterio „git“ būsena:

 # On branch master # Your branch is ahead of 'origin/master' by 11 commits. # nothing to commit (working directory clean) 

Ir aš suprantu, kodėl. Maniau, kad mano nešiojamas kompiuteris buvo šaltinis ... bet aš nežinau, ar tai, kad aš iš pradžių buvau ištrauktas iš „Subversion“ arba paspaudęs „Atmesti“. Kaip galiu:

  • Sužinokite, kur Git mano, kad šaltinis / šeimininkas?
  • Jei tai kažkur kitur, kaip galiu paversti savo nešiojamąjį kompiuterį į šaltinį / šeimininką?
  • Gaukite šį pranešimą. Tai verčia mane galvoti, kad Git nėra patenkintas.

Mano mac veikia „Git“ versija 1.6.0.1.


Kai paleisiu git remote show origin , kaip siūlo dbr, gaunu:

 ~/Projects/GeekFor/geekfor 10:47 AM $ git remote show origin fatal: '/Users/brian/Projects/GeekFor/gf/.git': unable to chdir or not a git archive fatal: The remote end hung up unexpectedly 

Kai paleisiu „Git git remote -v , kaip siūlo Aristotelis Pagaltzis, aš gaunu:

 ~/Projects/GeekFor/geekfor 10:33 AM $ git remote -v origin /Users/brian/Projects/GeekFor/gf/.git unfuddle git@spilth.unfuddle.com:spilth/geekfor.git 

Dabar, įdomu, dirbau savo projekte geekfor kataloge, tačiau jis sako, kad mano kilmė yra mano vietinis kompiuteris gf kataloge. Manau, kad „ gf buvo laikinasis katalogas, kurį naudodavau, kai projektą konvertuoju iš „Subversion“ į „Git“ ir tikriausiai kur aš spustelėjau, kad atjungčiau. Tada aš tikiu, kad geekfor kataloge patikrinau naują geekfor kopiją.

Taigi atrodo, kad turėčiau vadovautis dbr patarimais ir daryti:

 git remote rm origin git remote add origin git@spilth.unfuddle.com:spilth/geekfor.git 
214
10 нояб. nustatė Brian Kelly 2008-11-10 07:50 '08, 07:50, 2008-11-10 07:50
@ 13 atsakymų

1. Sužinokite, kur Git mano, kad šaltinis / šeimininkas naudoja git-remote

 git remote show origin 

.. tai grąžins kažką panašaus ..

 * remote origin URL: me@remote.example.com:~/something.git Remote branch merged with 'git pull' while on branch master master Tracked remote branch master 

Nuotolinė prieiga iš esmės yra nuoroda į nuotolinę saugyklą. Kai tai darote.

 git remote add unfuddle me@unfuddle.com/myrepo.git git push unfuddle 

.. git perkelia pakeitimus į nurodytą adresą. Tai panaši į nuotolinių saugyklų žymę.

Kai paleidžiate „ git status , jis patikrina, ar nuotolinis įsipareigojimas dingsta (palyginti su vietine saugykla), ir jei taip, kiek įsipareigoja. Jei spustelėsite visus pakeitimus „kilmė“, abu bus sinchronizuoti, todėl jūs negausite šio pranešimo.

2. Jei tai yra kitur, kaip galiu paversti savo nešiojamąjį kompiuterį į šaltinį / šeimininką?

Nėra prasmės tai padaryti. Tarkime, šaltinis yra pervadintas į nešiojamąjį kompiuterį - niekada nenorite, kad git push laptop nešiojamas nešiojamas kompiuteris.

Jei norite pašalinti nuotolinio valdymo pultą,

 git remote rm origin 

Tai neištrins nieko (pagal failo turinį / peržiūros istoriją). Tai sustabdys pranešimą „jūsų filialas priešais“, nes jis nebebus palygins jūsų saugyklos su nuotoliniu (nes jis jau yra!)

Turėkite omenyje, kad nėra nieko ypatingo apie origin , tai yra tik numatytasis „Git“ pavadinimas.

„Git“ pagal nutylėjimą naudoja origin , kai atliekate tokius dalykus kaip „ git push arba „ git pull . Taigi, jei turite nuotolinę prieigą, jūs naudojate daug (atsisakykite, jūsų atveju), aš rekomenduoju pridėti invalidumą kaip „kilmę“:

 git remote rm origin git remote add origin git@subdomain.unfuddle.com:subdomain/abbreviation.git 

arba atlikite vieną iš komandų su set-url:

 git remote set-url origin git@subdomain.unfuddle.com:subdomain/abbreviation.git 

Tada galite tiesiog atlikti „ git push arba „ git pull kad atnaujintumėte vietoj „ git push unfuddle master

180
10 нояб. atsakymas dbr lapkričio 10 d 2008-11-10 09:16 '08, 9:16, 2008-11-10 09:16

Aš atėjau į šį klausimą, ieško paaiškinimo, kad pranešimas „jūsų filialas yra priekyje ...“ reiškia bendrą git schemą. Atsakymas į šį klausimą nebuvo, bet kadangi šis klausimas šiuo metu rodomas „Google“ viršuje, kai ieškote frazės „Jūsų filialas yra„ kilmė “/„ šeimininkas “, ir nuo tada supratau, kad pranešimas iš tikrųjų reiškia, kad aš maniau, kad paskelbiau informacija čia.

Taigi, būdamas git newbie, aš matau, kad man reikia atsakymo. Visų pirma frazė „jūsų pramonė yra į priekį ...“ reiškia, kad yra failų, kuriuos pridėjote ir įrašėte į savo vietos saugyklą, bet niekada nebuvo stumiami į viršų. Šio pranešimo tikslą dar labiau painioja tai, kad git diff, bent jau man, nerado skirtumo. Tik tada, kai pradėjau git diff kilmės / meistrą, jie man pasakė, kad yra skirtumų tarp mano vietos saugyklos ir nuotolinio magistro.

Taigi, kad būtų aišku:


"Jūsų filialas yra priekyje ..." => Turite spustelėti nuotolinį vedlį. Paleiskite „git diff origin / master“, kad sužinotumėte, kokie skirtumai yra tarp vietinės saugyklos ir nuotolinio pirminio saugyklos.

border=0

Tikiuosi, kad tai padės kitiems naujokams.

(Be to, suprantu, kad yra konfigūracijos subtilybių, kurios gali iš dalies atšaukti šį sprendimą, pavyzdžiui, tai, kad kapitonas iš tikrųjų nėra „nuotolinis“, ir kad „kilmė“ yra konfigūruojamas pavadinimas, naudojamas konvencijoje ir tt Tačiau naujokams nerūpi, mums reikia paprastų, paprastų atsakymų, o vėliau galime skaityti apie sudėtingas problemas, kai tik išsprendžiame neatidėliotiną problemą.)

Earl

284
06 апр. atsakymą pateikė Earl Jenkins 06 balandžio. 2010-04-06 20:00 '10 20:00 val. 2010-04-06 20:00

Aš turėjau problemą, panašią į tą, kur mano darbinis katalogas buvo ahead of origin by X commits , bet „ git pull paskatino Everything up-to-date . Man pavyko ją išspręsti vadovaudamasi šiais patarimais . Aš jį paskelbiu čia, jei jis padeda kažkam panašios problemos.

Pagrindinis nustatymas yra toks:

 $ git push {remote} {localbranch}:{remotebranch} 

Jei žodžiai skliausteliuose turėtų būti pakeisti nuotoliniu pavadinimu, vietinio filialo pavadinimu ir nuotolinio filialo pavadinimu. Pavyzdžiui.

 $ git push origin master:master 
38
30 марта '11 в 4:02 2011-03-30 04:02 Atsakymą pateikia Mimsas H. Wrightas kovo 30 d. 11 val. 4:02 2011-03-30 04:02

Kartais egzistuoja skirtumas tarp vietinės talpyklos pirminės versijos (kilmės / šeimininko) ir tikrojo šeimininko.

Jei paleisite „ git remote update , jis iš naujo sinchronizuos originalą su pradiniu / pagrindiniu

žr. priimtą atsakymą į šį klausimą

Skirtumai tarp git originalios traukos kilmės ir git pull kilmės / šeimininko

24
08 июня '12 в 15:47 2012-06-08 15:47 atsakymas duotas chimoje 08 birželio 12 d. 15:47 2012-06-08 15:47

Maniau, kad mano nešiojamas kompiuteris buvo šaltinis ...

Tai kažkas beprasmiška: origin nurodo nuotolinį saugyklą pagal nutylėjimą - tai, kurią paprastai atkuriate / ištraukiate iš kitų žmonių.

Kaip galiu:

  • git remote -v parodys jums tą origin ; origin/master yra jūsų „žymė“ paskutinei žinomai origin saugyklos master filialo būsenai, o jūsų master yra šakos stebėjimas, skirtas origin/master . Visa tai turėtų būti .

  • Jūs nedarote. Bent jau nėra taško, kad kapinynas būtų pats numatytasis nuotolinis saugykla.

  • Tai ne. Jame tiesiog pasakoma, kad jūs padarėte tiek daug vietos, kad jie nėra nuotolinio saugykloje (pagal paskutinę žinomą šio kapinyno būseną).

9
10 нояб. atsakymą pateikė Aristotelis Pagaltzis lapkričio 10 d 2008-11-10 08:09 '08, 08:09 2008-11-10 08:09

[Sprendimas]

 $ git push origin 

^ ji ją išsprendė. Ką jis padarė, jis sinchronizavo mano kompiuterį (nešiojamąjį kompiuterį) su „šaltiniu“, kuris yra nuotoliniame serveryje.

3
01 июня '11 в 22:28 2011-06-01 22:28 atsakymą pateikė „ Chris“ birželio 1 d. 11 val. 22:28 2011-06-01 22:28

Jis laukia, kol „spustelėsite“. Pabandykite:

$ git push

1
20 апр. atsakymas pateikiamas Vino 20 d. 2011-04-20 06:03 '11 at 6:03 2011-04-20 06:03

Kova su šia problema, ir nė vienas iš ankstesnių atsakymų neišsprendžia klausimo, kaip matau. Aš išsprendžiau problemą, kad pamatytumėte, ar galiu išsiaiškinti savo problemą.

Sukuriu naują saugyklą (rep1), įterpiu į jį vieną failą ir jį išsprendžiu.

 mkdir rep1 cd rep1 git init echo "Line1" > README git add README git commit -m "Commit 1" 

Sukuriu rep1 kloną ir jį vadinu rep2. Žiūriu į rep2 ir pamatyti, kad failas yra teisingas.

 cd ~ git clone ~/rep1 rep2 cat ~/rep2/README 

Į rep1, aš padaryti vieną pakeitimą failą ir jį išspręsti. Tada rep1, aš sukuriu ištrintą objektą, kad būtų nuoroda į rep2 ir spustelėkite pakeitimus.

 cd ~/rep1 <change file and commit> git remote add rep2 ~/rep2 git push rep2 master 

Dabar, kai persijungiu į rep2 ir įvykdau git statusą, jie man sako, kad esu prieš kreivę.

 # On branch master # Your branch is ahead of 'origin/master' by 1 commit. # # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # modified: README # 

README į rep2, kaip iš pradžių, prieš antrąjį. Vieninteliai pakeitimai, kuriuos aš padariau, yra rep1, ir viskas, ką norėjau padaryti, buvo stumti juos į rep2. Ką aš nesuprantu?

1
29 июля '10 в 21:10 2010-07-29 21:10 atsakė Steve Hindmarchui liepos 10 d., 21:10 2010-07-29 21:10

Pastaruoju metu turėjau šią problemą, ir aš maniau, kad tai buvo todėl, kad ištrinau kai kuriuos failus, kurių man nereikia. Problema ta, kad git nežino, kad failai buvo ištrinti, ir mato, kad serveris vis dar yra. (serveris = kilmė)

Taigi aš bėgo

 git rm $(git ls-files --deleted) 

Tada pradėkite vykdyti ir spustelėkite.

Tai išsprendė problemą.

1
26 июля '11 в 1:22 2011-07-26 01:22 atsakymas pateikiamas „ Loneydoodle“ liepos 26 d. 11 val. 1:22 2011-07-26 01:22

Aš esu naujas, kad git. Turėjau tą pačią problemą: „Jūsų filialas yra prieš pranešimus„ N “. Vykdant siūlomą „git diff origin / master“, iš tikrųjų buvo tam tikrų skirtumų, kurių nenorėjau išlaikyti. Taigi ...

Kadangi mano git klonas buvo skirtas prieglobai, ir norėjau gauti tikslią pagrindinio repo kopiją ir nenorėjau išsaugoti jokių vietinių pakeitimų, nusprendžiau išsaugoti visą repo ir sukurti naują:

(priegloba)

 mv myrepo myrepo git clone USER@MASTER_HOST:/REPO_DIR myrepo 

Dėl tikslingumo naudojosi klonavimo pakeitimais mano priegloboje. Ne daugiau. Aš padarysiu šiuos pakeitimus priimančioje vietoje, nustatysiu git ten ir nuimsiu. Tikiuosi, kad tai turėtų išlaikyti mano git kloną visapusiškai sinchronizuojant.

/ Nara

1
04 янв. Atsakymą pateikė Nara Narasimhan 04 Jan 2012-01-04 02:17 '12 at 2:17 2012-01-04 02:17

Prieš nustatydami savo įsipareigojimus, galite atkurti konkretų įvykį.

 $ git status # On branch master # Your branch is ahead of 'origin/master' by 2 commits. # nothing to commit (working directory clean) 

Naudokite „ git log kad sužinotumėte, ką įsipareigojimas buvo padarytas prieš įvykstant vietiniams pakeitimams.

 $ git log commit 3368e1c5b8a47135a34169c885e8dd5ba01af5bb ... commit baf8d5e7da9e41fcd37d63ae9483ee0b10bfac8e ... 

Atkreipkite dėmesį į vietinius įsipareigojimus ir iš naujo nustatykite ankstesnį įsipareigojimą:

 git reset --hard baf8d5e7da9e41fcd37d63ae9483ee0b10bfac8e 
0
23 авг. atsakymą pateikė RobLoach 23 rug . 2011-08-23 18:24 '11 at 18:24 2011-08-23 18:24

Man buvo įdomu tą patį apie mano repo. Mano atveju, turėjau seną nuotolį, kurio nebuvau stumti, todėl turėjau ją pašalinti.

Gaukite nuotolinio valdymo sąrašą:

 git remote 

Pašalinkite tuos, kurių jums nereikia.

 git remote rm {insert remote to remove} 
0
10 июня '11 в 3:07 2011-06-10 03:07 atsakymą pateikė Jason Rikard birželio 10 d. 11:07 2011-06-10 03:07

Aš turėjau problemą: „Jūsų filialas yra prieš“ kilmę / šeimininką ”, kuris nesiima įsipareigojimų. kai perkeliau į nuotolinį saugyklą naudojant:

 git push ssh://git@xxx.repositryhosting.com/yyy/zzz.git 

Kai sužinojau, kad mano nuotolinis adresas buvo .git / FETCH_HEAD faile ir buvo naudojamas:

 git push 

problema išnyko.

-1
17 янв. atsakymas pateikiamas Nr. 17 sausio. 2012-01-17 14:48 „12, 12:48 PM 2012-01-17 14:48

Kiti klausimai apie „ žymes „ arba „ Ask a question“