git remote -v show
それが起源になると何が戻りますか?
originがgithubを指している場合、ステータスは最新であり、リモートリポジトリの前ではありません。少なくとも、Git1.6.5では、簡単なテストに使用しています。
とにかく、これを回避するには、masterブランチのリモートリポジトリを明示的に定義します。
$ git config branch.master.remote yourGitHubRepo.git
次に、その後にgit pull origin master
が続くとgit status
、クリーンステータスが返されます(先読みなし)。
どうして?get fetch origin master(git pull origin masterに含まれる)はFETCH_HEAD
(Charles Baileyが彼の回答で説明しているように)更新するだけでなく、ローカルのGitリポジトリ内の「remote masterブランチ」も更新するためです。
その場合、ローカルマスターはリモートマスターよりも「先に」いるようには見えません。
これをgit1.6.5でテストできます。
まず、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"
ベアリポジトリ(どこからでもプッシュを受信できるリポジトリ)を作成して、GitHubリポジトリをシミュレートします
PS D:\git\tests\pullahead\workrepo> cd ..
PS D:\git\tests\pullahead> git clone --bare workrepo github
私は作業リポジトリにモディフを追加し、それをgithubリポジトリにプッシュします(リモートとして追加されます)
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
私は、GitHubにプッシュされたGitHubのクローンを作成したホームリポジトリを作成します。
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
その後、最初の実験のためにworkrepoをクローンします
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(-)
そのリポジトリでは、git statusは ' origin
'の前のマスターgeingについて言及しています:
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)
しかしそれはorigin
github ではありません:
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)
しかし、githubへの起点を持つ(または起点がまったくない、リモートの「github」だけが定義されている)リポジトリでシーケンスを繰り返す場合、ステータスはクリーンです。
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)
私はしていた場合origin
に向いてgithub
、status
git1.6.5のためのクリーンだろう。
それは以前のgitの「先の」警告があるかもしれませんが、とにかく、git config branch.master.remote yourGitHubRepo.git
明示的に定義されたものは、Gitの初期バージョンでもそれを処理できるはずです。
git push
もそれを解決するようです(「すべて最新」のレポート)。