2013-05-10 10 views
8

Ich habe ein Repository auf Github, AAV1Git pull Herkunft <branch> überschreibt Master?

Auf meinem Laptop habe ich zwei Zweige haben, nannte man genannt Master und ein vs12up Der Master-Zweig war, wenn die Software Visual Studio 2008, war vs12up ist in Visual Studio 2012 konvertiert.

Auf meinem Laptop scheint alles in Ordnung, und ich schob den neuen Zweig zu Github, scheint richtig.

Auf meinem Desktop habe ich versucht, den Remote-Zweig zu ziehen:

git pull origin vs12up 

Es schrieb die Änderungen an meinem Master-Zweig auf dem Desktop, git log zeigt die auf dem Zweig vs12up gemacht Commits, aber git Zweig zeigt nur Master, das ist der aktuelle Zweig.

Wie kann ich die Änderungen an den Master Zweig zurückkehren und ziehen Sie den vs12up Zweig auf meinem Desktop auf das Repository auf meinem Laptop passen?

Antwort

27

Wenn Sie eine git pull mit einem Remote-Zweig-Namen tun, wird es die Remote-Zweig abrufen und dann in Ihre aktuelle lokale Niederlassung zusammenführen. Um dies rückgängig zu machen, müssen Sie zuerst Ihre lokale Verzweigung auf die entfernte master zurücksetzen und dann eine neue lokale vs12up Verzweigung aus der entsprechenden entfernten Verzweigung erstellen.

  1. Ihr lokales zurücksetzen master die Remote-Repository master (ACHTUNG: Stellen Sie sicher, dass Sie keine unbestätigten Änderungen haben Sie vor dem folgenden Befehl behalten wollen): passen

    git reset --hard origin/master 
    
  2. Liefert alle Remote-Niederlassungen in Ihrem lokalen Repository:

    git fetch origin 
    
  3. erstellen Sie einen neuen lokalen vsup12 Zweig von dem entfernten vsup12 Zweig und Schalter auf diese neue lokale Niederlassung:

    git checkout -b vsup12 origin/vsup12 
    

Beachten Sie, dass, wenn Sie anschließend eine gerade tun git pull während auf den vsup12 Zweig geschaltet, werden Sie holen und verschmelzen die neuesten Änderungen von der vsup12 Niederlassung auf Github in Ihre lokale vsup12

+0

Vielen Dank. Zwei Fragen, was macht das Argument -b? – Jeff

+0

Und wechsle ich einfach durch git checkout master zurück? – Jeff

+3

Das '-b' gibt den Namen der neuen Verzweigung an. 'git checkout -b foo 'ist eine Abkürzung für das Erstellen eines Zweigs namens' foo' (mit 'git branch foo') und dann zum Umschalten (mit' git checkout foo'). – earl