Vinnaren i pepparkakshustävlingen!
  • 1
  • 2
2017-07-01, 19:36
  #1
Medlem
Hej!

Ledsen för ett troligtvis enkelt löst problem. Jag klonade en repository på jobbet med
"git clone /path/to/project /path/to/cloned/project"

"/path/to/project" avser huvudprojektet, och
"/path/to/cloned/project" är då min version av detta. (Absoluta sökvägar i Linux.)

När jag nu försökt pusha uppdateringar till min egna version av projektet med
"git push origin master"
så får jag upp ett fel där det framgår att den försöker pusha från/till fel path, till huvudprojektet. origin/ master är alltså fortfarande satta till huvudprojektets sökväg. (Felet är ej relevant till mitt problem, det var bara ren tur att något sket sig innan jag pushat till fel repository.)

Jag som är ny med git har inte lyckats lista ut via dokumentationen hur jag gör så att kommandot
"git push origin master" pushar mina lokala uppdateringar i min version av projektet, till samma repository. D.v.s. /path/to/cloned/project -> /path/to/cloned/project. (Jag står i /path/to/cloned/project när jag kör dessa kommandon!)

När jag listar branches får jag bara upp en, som heter master.

När jag skriver kommandot "git remote -v" (enligt en tutorial jag testade) så får jag:
"origin /path/to/project (fetch)"
"origin /path/to/project (push)"

Jag misstänker att felet ligger här. Kan det stämma? Enormt tacksam för input!

Tack på förhand!
__________________
Senast redigerad av DittSamvete 2017-07-01 kl. 19:40.
Citera
2017-07-01, 20:04
  #2
Medlem
Trollfeeders avatar
Citat:
Ursprungligen postat av DittSamvete
Hej!

Ledsen för ett troligtvis enkelt löst problem. Jag klonade en repository på jobbet med
"git clone /path/to/project /path/to/cloned/project"

"/path/to/project" avser huvudprojektet, och
"/path/to/cloned/project" är då min version av detta. (Absoluta sökvägar i Linux.)

När jag nu försökt pusha uppdateringar till min egna version av projektet med
"git push origin master"
så får jag upp ett fel där det framgår att den försöker pusha från/till fel path, till huvudprojektet. origin/ master är alltså fortfarande satta till huvudprojektets sökväg. (Felet är ej relevant till mitt problem, det var bara ren tur att något sket sig innan jag pushat till fel repository.)

Jag som är ny med git har inte lyckats lista ut via dokumentationen hur jag gör så att kommandot
"git push origin master" pushar mina lokala uppdateringar i min version av projektet, till samma repository. D.v.s. /path/to/cloned/project -> /path/to/cloned/project. (Jag står i /path/to/cloned/project när jag kör dessa kommandon!)

När jag listar branches får jag bara upp en, som heter master.

När jag skriver kommandot "git remote -v" (enligt en tutorial jag testade) så får jag:
"origin /path/to/project (fetch)"
"origin /path/to/project (push)"

Jag misstänker att felet ligger här. Kan det stämma? Enormt tacksam för input!

Tack på förhand!

Jag är inte med på vad som är problemet. Det du gör borde leda till precis det du beskriver. När du skriver "git push origin master", så säger du, pusha min master till origin, dvs det du klonade.

Vad vill du göra? Commita lokalt? Det har du väl redan gjort?
Citera
2017-07-01, 20:16
  #3
Medlem
Citat:
Ursprungligen postat av Trollfeeder
Jag är inte med på vad som är problemet. Det du gör borde leda till precis det du beskriver. När du skriver "git push origin master", så säger du, pusha min master till origin, dvs det du klonade.

Vad vill du göra? Commita lokalt? Det har du väl redan gjort?

Jag har inte felmeddelandet framför mig då det var på jobbet, men detta skedde:

git add .
git commit -m "message"
git push origin master

Detta har fungerat på tidigare projekt vilket gjorde att jag inte tänkte att något annat skulle hända. Men felet som dyker upp säger att jag inte kan pusha till /path/to/project p.g.a att jag måste göra en merge först. Så jag har förstått detta som att den tror att jag försöker pusha till, och därmed merga med, huvudprojektet på path /path/to/project. (Jag har bara 1 commit totalt, vilket git säger i form av att jag ligger 1 commit före huvudprojektet.)

Att felet då påstår att jag inte kan merga med huvudprojektet på /path/to/project så tolkar jag det som att något var fel med mitt push-kommando. Är jag helt ute och cyklar nu?

Kan origin och/ eller master vara definierade som andra paths, tack vare att jag gjorde en klon?
__________________
Senast redigerad av DittSamvete 2017-07-01 kl. 20:21.
Citera
2017-07-01, 20:29
  #4
Medlem
Trollfeeders avatar
Citat:
Ursprungligen postat av DittSamvete
Jag har inte felmeddelandet framför mig då det var på jobbet, men detta skedde:

git add .
git commit -m "message"
git push origin master

Detta har fungerat på tidigare projekt vilket gjorde att jag inte tänkte att något annat skulle hända. Men felet som dyker upp säger att jag inte kan pusha till /path/to/project p.g.a att jag måste göra en merge först. Så jag har förstått detta som att den tror att jag försöker pusha till, och därmed merga med, huvudprojektet på path /path/to/project. (Jag har bara 1 commit totalt, vilket git säger i form av att jag ligger 1 commit före huvudprojektet.)

Att felet då påstår att jag inte kan merga med huvudprojektet på /path/to/project så tolkar jag det som att något var fel med mitt push-kommando. Är jag helt ute och cyklar nu?



Jaha, jag förstod dig nog fel först, jag tolkade det som att du inte ville pusha till repot du klonade, dvs origin.

Du försöker pusha ändringar som skriver om historiken, skulle jag tro. Kan någon annan ha mergat en commit? Har du provat att göra "git fetch" och sen kolla vad "git status" säger efter det?

Citat:
Kan origin och/ eller master vara definierade som andra paths, tack vare att jag gjorde en klon?

Origin är ett repo - repot du klonade! Sen kan du ändra vad som är origin i .git/config, som ligger i repo-roten.

Master är en gren i ditt repo. Origin/master är hur master såg ut i origin när du gjorde fetch senast. När du gör

git push origin master

Så pushar du din master till origin. Din master trackar origin/master (per default), så Git vet att det är till origins master som dina ändringar ska pushas. Har du ingen tracking branch, så måste du speca vilken branch du pushar till också, men så är inte fallet här.

Är du med? Blev lite rörig förklaring...
Citera
2017-07-01, 20:40
  #5
Medlem
Trollfeeders avatar
Citat:
Ursprungligen postat av DittSamvete
Jag som är ny med git har inte lyckats lista ut via dokumentationen hur jag gör så att kommandot
"git push origin master" pushar mina lokala uppdateringar i min version av projektet, till samma repository. D.v.s. /path/to/cloned/project -> /path/to/cloned/project. (Jag står i /path/to/cloned/project när jag kör dessa kommandon!)

Det var det här jag menade alltså. Du försöker pusha till ditt eget repo. Det är helt ologiskt. Poängen med push är att kunna dela med dig av dina ändringar till andra repon.
Citera
2017-07-01, 20:42
  #6
Medlem
Citat:
Ursprungligen postat av Trollfeeder
Jaha, jag förstod dig nog fel först, jag tolkade det som att du inte ville pusha till repot du klonade, dvs origin.

Du försöker pusha ändringar som skriver om historiken, skulle jag tro. Kan någon annan ha mergat en commit? Har du provat att göra "git fetch" och sen kolla vad "git status" säger efter det?



Origin är ett repo - repot du klonade! Sen kan du ändra vad som är origin i .git/config, som ligger i repo-roten.

Master är en gren i ditt repo. Origin/master är hur master såg ut i origin när du gjorde fetch senast. När du gör

git push origin master

Så pushar du din master till origin. Din master trackar origin/master (per default), så Git vet att det är till origins master som dina ändringar ska pushas. Har du ingen tracking branch, så måste du speca vilken branch du pushar till också, men så är inte fallet här.

Är du med? Blev lite rörig förklaring...

Jag tror jag har fått en bättre koll på hur det fungerar, tack så mycket!

Det som skett här är att jag har gjort en klon av ett utvecklingsprojekt på jobbet.
Alla mina ändringar ska commitas och pushas till den klonen. Ingen annan använder min version.
När arbetet är utfört och testas ska detta mergas in i utvecklingsprojektet igen.

Så när jag stod i min klonade repository har jag kört (utan att tänka mig för)
git add .
git commit -m "message"
git push origin master
varpå git klagade på att jag måste göra en merge, och då drog jag slutsatsen att antingen "origin" eller "master" var definierade till att peka på utvecklingsprojektet, för annars skulle det fungerat som tänkt (att jag ville pusha mina commitade ändringar, i min klonade version, till master för min klon).

Så origin är då alltså troligtvis definierad till att peka på utvecklingsprojektet, och inte till min egen version, därav felet?
Är det vad detta betyder "origin /path/to/project (push)"? Det ser ju ut att kunna vara någon definition av origin (vid en push?) Jag antar att git-config också klonas om den ligger i repot?

Tack för all hjälp förresten!
Citera
2017-07-01, 20:43
  #7
Medlem
Citat:
Ursprungligen postat av Trollfeeder
Det var det här jag menade alltså. Du försöker pusha till ditt eget repo. Det är helt ologiskt. Poängen med push är att kunna dela med dig av dina ändringar till andra repon.

Okej, så när jag kört commit så är ändringarna sparade någonstans i väntan på att pushas till t.ex. hvudprojektet?
Citera
2017-07-01, 20:52
  #8
Medlem
Trollfeeders avatar
Citat:
Ursprungligen postat av DittSamvete
Jag tror jag har fått en bättre koll på hur det fungerar, tack så mycket!

Det som skett här är att jag har gjort en klon av ett utvecklingsprojekt på jobbet.
Alla mina ändringar ska commitas och pushas till den klonen. Ingen annan använder min version.
När arbetet är utfört och testas ska detta mergas in i utvecklingsprojektet igen.

Så när jag stod i min klonade repository har jag kört (utan att tänka mig för)
git add .
git commit -m "message"
git push origin master
varpå git klagade på att jag måste göra en merge, och då drog jag slutsatsen att antingen "origin" eller "master" var definierade till att peka på utvecklingsprojektet, för annars skulle det fungerat som tänkt (att jag ville pusha mina commitade ändringar, i min klonade version, till master för min klon).

Så origin är då alltså troligtvis definierad till att peka på utvecklingsprojektet, och inte till min egen version, därav felet?
Är det vad detta betyder "origin /path/to/project (push)"? Det ser ju ut att kunna vara någon definition av origin (vid en push?) Jag antar att git-config också klonas om den ligger i repot?

Tack för all hjälp förresten!

Ja, precis. Origin är det du klonade - här utvecklingsprojektet. Men du kan som sagt "byta" origin genom att ändra i .git/config.

Det du klonade är bara en lokal kopia. Det kanske vore en bra idé att ha ett repo på en annan maskin/server du jobbar mot, så att om det händer något med ditt repo eller med maskinen det ligger på, så har du något att återskapa ifrån. Men det beror på hur länge du tänker jobba i ditt repo innan du ska merga.

Om du ser dig själv jobba med Git en längre tid är det nog en bra idé att grotta ner sig lite i hur det funkar. Det finns bra videos på youtube som kan rekommenderas, t ex denna:

https://www.youtube.com/watch?v=ZDR433b0HJY
Citera
2017-07-01, 20:53
  #9
Medlem
Trollfeeders avatar
Citat:
Ursprungligen postat av DittSamvete
Okej, så när jag kört commit så är ändringarna sparade någonstans i väntan på att pushas till t.ex. hvudprojektet?

När du har kört commit är ändringarna inskrivna i historiken i ditt lokala repo. Men var medveten om att det går att skriva om historiken i Git. Så återigen, är det här inte högst tillfälligt, så är det bra att ha ett repo att pusha till på en annan maskin.
Citera
2017-07-01, 21:01
  #10
Medlem
Citat:
Ursprungligen postat av Trollfeeder
Ja, precis. Origin är det du klonade - här utvecklingsprojektet. Men du kan som sagt "byta" origin genom att ändra i .git/config.

Det du klonade är bara en lokal kopia. Det kanske vore en bra idé att ha ett repo på en annan maskin/server du jobbar mot, så att om det händer något med ditt repo eller med maskinen det ligger på, så har du något att återskapa ifrån. Men det beror på hur länge du tänker jobba i ditt repo innan du ska merga.

Om du ser dig själv jobba med Git en längre tid är det nog en bra idé att grotta ner sig lite i hur det funkar. Det finns bra videos på youtube som kan rekommenderas, t ex denna:

https://www.youtube.com/watch?v=ZDR433b0HJY

Precis! Det var detta som var syftet, att ha en backup någonstans. Jag läste nu lite mer om hur det funkar med push. Jag antog att när jag pushade skulle koden laddas upp på företagets Github eller något liknande, så som det funkat när man kört egna projekt. Jag får höra mig för på jobbet på måndag om hur de andra gör/ satt upp sitt, men det är säkert mycket möjligt att allt arbete bara backup:as på företagets servrar då vi kör allt via remote desktop till deras utvecklingsmiljö.

Stort stort tack för att du tog dig tid en lördag, nu känner jag mig lite lugnare inför måndag!
Citera
2017-07-01, 21:17
  #11
Medlem
Trollfeeders avatar
Citat:
Ursprungligen postat av DittSamvete
Precis! Det var detta som var syftet, att ha en backup någonstans. Jag läste nu lite mer om hur det funkar med push. Jag antog att när jag pushade skulle koden laddas upp på företagets Github eller något liknande, så som det funkat när man kört egna projekt. Jag får höra mig för på jobbet på måndag om hur de andra gör/ satt upp sitt, men det är säkert mycket möjligt att allt arbete bara backup:as på företagets servrar då vi kör allt via remote desktop till deras utvecklingsmiljö.

Stort stort tack för att du tog dig tid en lördag, nu känner jag mig lite lugnare inför måndag!

Inga problem, lycka till!
Citera
2017-07-01, 21:41
  #12
Medlem
Eftersom du verkar använda Linux så kan jag rekommendera gitk som grafiskt visar din lokala repository med grenar (lokala och remote), taggar, m m. Då borde det vara enklare att se vad det är som orsakar att du behöver merga.
Citera
  • 1
  • 2

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback