15

私は gitolite をインストールしました (実験のために今のところローカルに) 動作しているように見えますが、新しいリポジトリはデフォルトで git clone 後にリモートを追跡していません。私の記憶が正しければ、github.com からリポジトリをクローンすると、すでにプッシュとプルが可能です。

これが私が試したものです:

$ git clone git@localhost:sandbox
Cloning into sandbox...
warning: You appear to have cloned an empty repository.
$ echo "A" > README
$ git add README
$ git commit README -m 'test'
$ git push
No refs in common and none specified; doing nothing.
Perhaps you should specify a branch such as 'master'.
fatal: The remote end hung up unexpectedly
error: failed to push some refs to 'git@localhost:sandbox'

明示的にプッシュしようとすると、すべてが機能します。

$ git push origin master
Counting objects: 6, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (6/6), 426 bytes, done.
Total 6 (delta 0), reused 0 (delta 0)
To git@localhost:sandbox
 * [new branch]      master -> master

この追加の手順は本当に必要ですか? デフォルトで設定できますか?github ではそうですよね?

ありがとうございました

4

2 に答える 2

25

最初の git push では、プッシュするブランチを常に指定する必要があります。

git push -u origin master

次に、意図したとおりに、同じブランチから次のプッシュを実行できます。

git push

git pushマンページから:

特別な refspec :(または+:非早送り更新を許可する) は、「一致する」ブランチをプッシュするように git に指示します。ローカル側に存在するすべてのブランチについて、同じ名前のブランチがリモートに既に存在する場合、リモート側が更新されます。側。
これは、明示的な refspec が見つからない場合のデフォルトの操作モードです

空のリポジトリのクローンを作成したため、最初のプッシュでは一致するブランチが見つかりません (アップストリーム リポジトリ ' origin' にはありません)。

注: 「の結果はgit push origin?」を参照してください。

git push のデフォルト ポリシーは、git 2.0 (または git1.9) で変更されます。

" " と" simple"を組み合わせた新しいプッシュ モード " " が導入されました。 " " refspec を指定しないと、リモート リポジトリの同じ名前のブランチを追跡するように設定されている場合にのみ、現在のブランチがリモート リポジトリの同じ名前にプッシュされます。 が構成されていない場合、このモードを新しい既定値にする予定です。currentupstream
git push
push.default

したがって、 ではgit push -u origin master、ここで-u( --set-upstream-to) が重​​要です (同じ名前のブランチをリモート ' origin' にプッシュするだけでなく、リモート トラッキング ブランチです。

于 2011-07-01T12:01:49.017 に答える
0

git branch --set-upstream次のコマンドを使用できます。
git branch --set-upstream develop origin/develop

于 2012-05-12T20:31:59.297 に答える