Gitを使用してリモートリポジトリに最初のプッシュを行うにはどうすればよいですか?


173

数えきれないほどのチュートリアルを読み終えたので、短くなり続けます。ここに私が持っているものがあります:

-私は自分のWindowsデスクトップでRubyMineを実行しています
- 指示に従って WebFactionホスティングアカウントにGitをインストールしました-Git
は両方のマシンで正常に動作しているようです

これが私がやっていることです:
1.サーバー上:
         a。mkdir プロジェクト
         b。git init
         c。git add。
         d。git commit <--- "何もコミットする必要はありません"
2.クライアントで:
         a。RubyMineで新しいプロジェクトを作成します。
         b。プロジェクトの最上位ディレクトリにある「git init」
         c。サーバーへの「変更のプッシュ」<----「一部の参照のプッシュに失敗しました...」

どのステップが欠けていますか?

回答:


393

サーバー上:

mkdir my_project.git
cd my_project.git
git --bare init

クライアント上:

mkdir my_project
cd my_project
touch .gitignore
git init
git add .
git commit -m "Initial commit"
git remote add origin youruser@yourserver.com:/path/to/my_project.git
git push origin master

オリジンを追加するとき、使用できるフォーマットとスキーマがいくつかあることに注意してください。ホスティングサービスの内容を確認することをお勧めします。


RubyMineを使用して作業しているため、変更した唯一の点は、touch .gitignoreを66のデフォルトファイルを使用してrailsプロジェクトを作成するように置き換えたことです。どうもありがとうございました!
ドナルドヒューズ

コマンドを一覧表示するための称賛。これは、リモートリポジトリもセットアップした方法です。
Dave Bacher、

5
このリポジトリで他の人に協力してもらいたい場合--sharedは、git --bare initコマンドの最後に追加してください。これにより、必要な権限が設定されます。
Josh Lindsey

この回答をありがとう。gitに関する非常に優れた書籍で不足しているものを埋めるこのようなものがあることは非常に役立ちますが、それでもCVSからの変換作業の多くはカバーしていません。
タコグラブバス

21
初めてgit push --set-upstream origin mastergit push origin masterはなく走るのが好きです。これにより、毎回入力git pushするgit pull代わりに、入力するだけで済みgit push origin masterます。あなたの好みに合うものは何でも。
リックスミス

8

あなたはこれを試すことができます:

サーバー上:

「いい/etc/groupね」に新しいグループを追加する(例)

mygroup:1001:michael,nir

新しいgitリポジトリを作成します。

mkdir /srv/git
cd /srv/git
mkdir project_dir
cd project_dir
git --bare init (initial git repository )
chgrp -R mygroup objects/ refs/ (change owner of directory )
chmod -R g+w objects/ refs/ (give permission write)

クライアント上:

mkdir my_project
cd my_project
touch .gitignore
git init
git add .
git commit -m "Initial commit"
git remote add origin youruser@yourserver.com:/path/to/my_project.git
git push origin master

(クライアント側のJosh Lindseyに感謝)

クライアントの後に、サーバーで次のコマンドを実行します。

cd /srv/git/project_dir
chmod -R g+w objects/ refs/

git pull後にこのエラーが発生した場合:

There is no tracking information for the current branch. Please specify which branch you want to merge with. See git-pull(1) for details

git pull <remote> <branch>
If you wish to set tracking information for this branch you can do so with:

git branch --set-upstream new origin/<branch>

試してください:

git push -u origin master

それが役立ちます。


5

コミットする前に、少なくとも1つのファイルをリポジトリに追加する必要があります.gitignore


私がそれを使おうとしている方法は、最初にクライアントからファイルを追加することだと思います。それが私がコードを書く場所だからです。それは概念的にgitでは場違いですか?最初にクライアントでコミットしてからサーバーにプッシュする必要がありますか?
ドナルドヒューズ

5

プロジェクトに上流のブランチがない場合、つまり、リモートリポジトリがローカルリポジトリに作成されたブランチについて初めて認識する場合は、次のコマンドが機能するはずです。

git push --set-upstream origin <branch-name>

3

@ジョシュ・リンジーはすでに完全にうまく答えました。しかし、sshをよく使用するため、いくつかの情報を追加したいと思います。

したがって、変更してください:

git remote add origin youruser@yourserver.com:/path/to/my_project.git

に:

git remote add origin ssh://youruser@yourserver.com/path/to/my_project

ドメインとパスの間のコロンはもうないことに注意してください。


1

クライアントにリモートリポジトリを設定する必要があります。

git remote add origin ssh://myserver.com/path/to/project

そのコマンドを実行しましたが、「git push origin master」を実行しても「一部の参照をプッシュできませんでした」という結果になります。「git pull origin master」を実行してみたところ、「リモート参照マスターが見つかりませんでした」というメッセージが表示されました。
ドナルドヒューズ

それが違いgit --bare initを生むかどうかはわかりませんが、私のリモートリポジトリは@Josh Lindseyの推奨に従って作成されています。
Dave Bacher、

私は同じ問題「いくつかの参照をプッシュできませんでした」...マスターブランチをリポジトリから作成したものにプッシュしようとしています...その後、ソースにマスターブランチがないことに気づきました-試行しているブランチを確認してくださいプッシュする存在:)
Datum Geek '27
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.