web-dev-qa-db-ja.com

フェッチとプッシュのリモートURLは異なりますか?

git remote --vリモート情報を表示する

Origin  https://github.com/test/testing-iOS.git (fetch)
Origin  https://github.com/test/testing-iOS.git (Push)

これは、フェッチとプッシュの両方が同じリモートURLを使用していることを示しています。

質問:

フェッチとプッシュのリモートURLは(ある場合)いつ異なりますか?

フェッチまたはプッシュのリモートURLを個別に変更するには、どのコマンドを使用できますか?

32
Boon

はい(別のリモートを使用します)。これが、Git 2.5が新しいref短縮形@{Push}を導入する理由です。
プッシュされていないGitコミットの表示 」を参照

フェッチまたはプッシュのリモートURLを個別に変更するには、どのコマンドを使用できますか?

別のリモコンが必要です:

git remote add myfork /url/for/my/fork
git config remote.pushdefault myfork

GitHubブログの投稿 " 三角ワークフローのサポートの向上 "は、@{Push}の使用方法を示しています。

https://cloud.githubusercontent.com/assets/1319791/8943755/5dcdcae4-354a-11e5-9f82-915914fad4f7.png

最後のプッシュ以降に現在のブランチに追加したコミットを確認します。

git clone https://github.com/YOUR-USERNAME/atom
cd atom
git config remote.pushdefault Origin
git config Push.default current
  • remote.pushdefaultwhereを指定します(リモートリポジトリに)。
  • Push.default指定whatは、refspecが明示的に指定されていない場合にPush(what refspec)を指定します。
    current、後者の場合、「現在のブランチをプッシュして、受信側の同じ名前のブランチを更新する」ことを意味します。

次のブランチは、あるURLからフェッチし、別のURLにプッシュします。

git remote add upstream https://github.com/atom/atom
git fetch upstream
git checkout -b whizbang upstream/master

(ここでwhizbangブランチはupstream/masterを追跡しますが、Origin/whizbangにプッシュします)

git log @{Push}..

これは、現在のブランチがgit Pushによってプッシュされるリモート追跡ブランチの現在の値、つまり@{Push}を示す新しいOrigin/whizbang表記を使用します。
表記whizbang@{Push}を使用して、任意のブランチのプッシュ宛先を参照することもできます。

21
VonC

ドキュメントから、フェッチとプッシュのURLは同じである必要があります。

http://git-scm.com/docs/git-remote

プッシュおよびフェッチURLを設定するコマンド

'git remote set-url' [--Push] <name> <newurl> [<oldurl>]

プッシュURLとフェッチURLは、別々に設定できても、同じ場所を参照する必要があることに注意してください。プッシュURLにプッシュしたものが、フェッチURLからすぐにフェッチした場合に表示されるはずです。 1つの場所(アップストリームなど)からフェッチして別の場所(公開リポジトリなど)にプッシュしようとしている場合は、2つの別々のリモートを使用します。

10
Suresh Sajja