Was gibt git remote -v show
zurück, wenn es um Ursprung geht?
Wenn der Ursprung auf github zeigt, sollte der Status auf dem neuesten Stand sein und nicht vor einem Remote-Repo. Zumindest benutze ich mit dem Git1.6.5 einen schnellen Test.
Wie auch immer, dies zu vermeiden, definiert explizit die Remote-Repo-Master-Zweig:
$ git config branch.master.remote yourGitHubRepo.git
dann ein git pull origin master
, gefolgt von einem git status
sollte einen sauberen Zustand zurück (nicht vor).
Warum? weil der get fetch origin master (im git pull origin master enthalten) nicht nur FETCH_HEAD
(wie Charles Bailey erklärt in his answer) aktualisiert, sondern es würde auch aktualisieren die "remote master branch" innerhalb Ihrer lokalen Git-Repository.
In diesem Fall würde Ihr lokaler Master nicht mehr dem Remote-Master voraus zu sein scheinen.
Ich kann dies testen, mit einem Git1.6.5:
Zuerst erstelle ich eine workrepo:
PS D:\git\tests> cd pullahead
PS D:\git\tests\pullahead> git init workrepo
Initialized empty Git repository in D:/git/tests/pullahead/workrepo/.git/
PS D:\git\tests\pullahead> cd workrepo
PS D:\git\tests\pullahead\workrepo> echo firstContent > afile.txt
PS D:\git\tests\pullahead\workrepo> git add -A
PS D:\git\tests\pullahead\workrepo> git commit -m "first commit"
ich simulieren ein Repo GitHub von einem nackten Repo zu schaffen (eine, die Push von überall empfangen kann)
PS D:\git\tests\pullahead\workrepo> cd ..
PS D:\git\tests\pullahead> git clone --bare workrepo github
Ich füge ein modif zu meine Arbeits Repo, dass ich auf gitHub Repo-Push (als Remote hinzugefügt)
PS D:\git\tests\pullahead> cd workrepo
PS D:\git\tests\pullahead\workrepo> echo aModif >> afile.txt
PS D:\git\tests\pullahead\workrepo> git ci -a -m "a modif to send to github"
PS D:\git\tests\pullahead\workrepo> git remote add github d:/git/tests/pullahead/github
PS D:\git\tests\pullahead\workrepo> git push github
ich ein Haus Repo, geklontes o erstellen f GitHub, in dem ich ein paar Änderungen vornehmen, auf GitHub geschoben:
PS D:\git\tests\pullahead\workrepo> cd ..
PS D:\git\tests\pullahead> git clone github homerepo
PS D:\git\tests\pullahead> cd homerepo
PS D:\git\tests\pullahead\homerepo> type afile.txt
firstContent
aModif
PS D:\git\tests\pullahead\homerepo> echo aHomeModif1 >> afile.txt
PS D:\git\tests\pullahead\homerepo> git ci -a -m "a first home modif"
PS D:\git\tests\pullahead\homerepo> echo aHomeModif2 >> afile.txt
PS D:\git\tests\pullahead\homerepo> git ci -a -m "a second home modif"
PS D:\git\tests\pullahead\homerepo> git push github
ich klonen workrepo dann für ein erstes Experiment
PS D:\git\tests\pullahead\workrepo4> cd ..
PS D:\git\tests\pullahead> git clone workrepo workrepo2
Initialized empty Git repository in D:/git/tests/pullahead/workrepo2/.git/
PS D:\git\tests\pullahead> cd workrepo2
PS D:\git\tests\pullahead\workrepo2> git remote add github d:/git/tests/pullahead/github
PS D:\git\tests\pullahead\workrepo2> git pull github master
remote: Counting objects: 8, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 6 (delta 1), reused 0 (delta 0)
Unpacking objects: 100% (6/6), done.
From d:/git/tests/pullahead/github
* branch master -> FETCH_HEAD
Updating c2763f2..75ad279
Fast forward
afile.txt | Bin 46 -> 98 bytes
1 files changed, 0 insertions(+), 0 deletions(-)
In diesem Repo, tut git status Master geing erwähnen vor 'origin
':
PS D:\git\tests\pullahead\workrepo5> git status
# On branch master
# Your branch is ahead of 'origin/master' by 2 commits.
#
nothing to commit (working directory clean)
Aber das ist nur origin
ist Github nicht:
PS D:\git\tests\pullahead\workrepo2> git remote -v show
github d:/git/tests/pullahead/github (fetch)
github d:/git/tests/pullahead/github (push)
origin D:/git/tests/pullahead/workrepo (fetch)
origin D:/git/tests/pullahead/workrepo (push)
Aber wenn ich wiederholen Sie die Sequenz in einem Repo, die einen Ursprung auf Github (oder keine Herkunft überhaupt, nur eine entfernte ‚Github‘ definiert ist), Status ist sauber hat:
PS D:\git\tests\pullahead\workrepo2> cd ..
PS D:\git\tests\pullahead> git clone workrepo workrepo4
PS D:\git\tests\pullahead> cd workrepo4
PS D:\git\tests\pullahead\workrepo4> git remote rm origin
PS D:\git\tests\pullahead\workrepo4> git remote add github d:/git/tests/pullahead/github
PS D:\git\tests\pullahead\workrepo4> git pull github master
remote: Counting objects: 8, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 6 (delta 1), reused 0 (delta 0)
Unpacking objects: 100% (6/6), done.
From d:/git/tests/pullahead/github
* branch master -> FETCH_HEAD
Updating c2763f2..75ad279
Fast forward
afile.txt | Bin 46 -> 98 bytes
1 files changed, 0 insertions(+), 0 deletions(-)
PS D:\git\tests\pullahead\workrepo4> git status
# On branch master
nothing to commit (working directory clean)
Wenn ich nur origin
zeigt auf github
, status
wäre sauber für git1.6.5.
Es kann mit einer 'ahead' Warnung für frühere git, aber auf jeden Fall eine explizit definierte git config branch.master.remote yourGitHubRepo.git
sollte in der Lage sein, dies zu tun, auch mit frühen Versionen von Git.
Ich habe das auch bemerkt; ein "git push" scheint es auch zu lösen ("alles auf dem neuesten Stand"). –
'git config --get-regexp br. *' Kann Ihnen sagen, ob Ihre Konfiguration einen lokalen Zweig hat, der einen anderen Zweig verfolgt – VonC
Kannst du 'git config branch.master.remote yourGitHubRepo.git' in deine workRepo eingeben und check (at der nächste 'git Pull-Ursprung'), wenn der Status mit einer" Voraus "Warnung bleibt? – VonC