2

オリジンとアップストリームのリモートを持つレポがあります。通常、私のワークフローでは、変更をアップストリームからプルし、それらをオリジンにプッシュします (この場合、アップストリームは会社の GitHub 組織のリポジトリであり、正規のものであり、オリジンはそのフォークです)。

問題は、私のリモート追跡ブランチが Iまたはupstream/masterで更新されないように見えることです。git pull upstream mastergit fetch upstream master

したがって、次のようなものから始めるとします。

* d386ff8 (upstream/master, origin/master, master) commit 1

そして実行するgit pull upstream master && git push origin masterと、次のような結果になります。

* 197ac91 (origin/master, master) commit 2
* d386ff8 (upstream/master) commit 1

アップストリーム リポジトリのマスター ブランチがコミット 2 であることはわかっています197ac91(その github ページにアクセスするか、リポジトリを再クローンすることで確認できます) 。私のレポのリモート追跡ブランチが移動するのは、プッシュしたときだけです。アップストリームリポジトリのマスターブランチが実際にどこにあるかを反映させるにはどうすればよいですか?upstream/master197ac91upstream/master

これが私のもの.git/configです:

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
    precomposeunicode = false
[remote "origin"]
    url = git@github.com:me/repo.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master
[remote "upstream"]
    url = git@github.com:mycompany/repo.git
    fetch = +refs/heads/*:refs/remotes/upstream/*

更新: これはこの質問の複製のようです。を実行することで問題を解決できますgit fetch upstream。どうやらmasterそのコマンドの最後に を追加すると、何らかの理由で、ローカルのリモート追跡ブランチが更新されなくなります。

4

2 に答える 2

1

これはほとんど推測ですが、あなたの編集とgit-pull-origin-master-does-not-update-origin-masterから、指定したときのようです

git pull upstream master

git は、fetch from が指定されていることを認識し、ブランチupstreamを更新する必要があることを認識します。masterしかし、そこから更新するのではなく、リモートがupstream/masterあることを確認し、そこから更新します。masterorigin

他のスレッドから、git pull upstream/masterローカル ブランチを更新するために使用する必要があるようです。

于 2013-05-16T21:03:31.553 に答える
0

にプッシュせずupstream、他の誰もあなたの変更をプッシュしていない場合upstreamは、最新のコミットで更新されていない可能性があります。

于 2013-05-16T19:41:00.967 に答える