質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.50%

  • AWS(Amazon Web Services)

    2004questions

    Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

  • Git

    1284questions

    Gitはオープンソースの分散バージョン管理システム(DVCS)です。

  • Red Hat Enterprise

    111questions

    Red Hat Enterpriseは、レッドハット社により開発・サポートが行われている業務向けLinuxディストリビューションです。オープンソースで無償で利用することができ、バイナリ版の入手・サポートは有償です。商用ディストリビューションとして人気が高く、代表的なLinuxの選択肢の一つです。

RHEL7 に git リポジトリを作ったが、push できない

解決済

回答 2

投稿

  • 評価
  • クリップ 1
  • VIEW 452

tacsheaven

score 7987

作業したこと

Amazon AWS 上の RHEL7 に、git を yum install でインストール
専用にユーザ A を作成(useradd)
git 用のユーザグループ gitgroup を作成(groupadd)し、ユーザ A を gitgroup に所属させた(usermod)
Windows の TeraTerm Pro で、ユーザAとしてログイン(認証は SSH Key。ユーザパスワードなし)
git リポジトリを /var/repository/git/[プロジェクト名].git として作成(cd /var/repository/git; git init --bare [プロジェクト名].git)

gitリポジトリの所属group を gitgroup に変更。アクセス権をユーザのみ書き込み可、グループおよびそれ以外は読み込みのみ(cd /var/repository/git; chgrp -R gitgroup [プロジェクト名].git)
SELinux を無効にしてリブート。

なおこの時点でのリポジトリの状況は以下のとおり。(cd /var/repository/git/[プロジェクト名].git; ls -Z)
drwxr-xr-x. [ユーザA] gitgroup unconfined_u:object_r:var_t:s0   branches
-rw-r--r--. [ユーザA] gitgroup unconfined_u:object_r:var_t:s0   config
-rw-r--r--. [ユーザA] gitgroup unconfined_u:object_r:var_t:s0   description
-rw-r--r--. [ユーザA] gitgroup unconfined_u:object_r:var_t:s0   HEAD
drwxr-xr-x. [ユーザA] gitgroup unconfined_u:object_r:var_t:s0   hooks
drwxr-xr-x. [ユーザA] gitgroup unconfined_u:object_r:var_t:s0   info
drwxr-xr-x. [ユーザA] gitgroup unconfined_u:object_r:var_t:s0   objects
drwxr-xr-x. [ユーザA] gitgroup unconfined_u:object_r:var_t:s0   refs

Windows 上の SourceTree で、ローカルのリポジトリを作成
SourceTree でリモートリポジトリ(リポジトリ名:repB)を設定
(ssh://[ユーザA]@[サーバ]/var/repository/git/[プロジェクト名].git)
SourceTree にSSH Key を設定(Pageant にキーをインポート)

発生している問題

この状態でローカルでコミットしてあるプロジェクトを push する。
プッシュ先:リモートリポジトリ
対象:ローカルブランチ master リモートブランチ master
※プッシュのダイアログで、初期状態で「対象」にチェックが入らない&リモートブランチが空白

以下のようにエラーのログが出て、プッシュできない。

git -c diff.mnemonicprefix=false -c core.quotepath=false -c credential.helper=manager-st push -v --tags --set-upstream [repB] master:master
Pushing to ssh:[ユーザA]@[サーバ名]/var/repository/git/[プロジェクト名].git
Unable to open connection:
Host does not existfatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

何かご助言いただければ幸いです。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

check解決した方法

+1

結局いろいろいじったら、どうにか解決しました。

  1. リモートの git リポジトリを作成する際に --shared オプションを追加していなかった
    対策:直接 gitリポジトリの config を修正し、[core] セクションに sharedrepository = 1 を追加

  2. 上の状態で push したら「リビジョンが合ってない」と言われた
    対策:SourceTree で一回 pull を行った(念のためソースファイルはバックアップを取った)

  3. pull 後、再度 push したら通った

実はリモートのリポジトリ名に . が含まれる(サーバのドメイン名をそのまま使用していたため)のが影響したかとも思ったのですが、それはありませんでした。

既にソース自体は存在していたため、作成する際に

  1. ローカル(のソースのルートの場所)で git リポジトリ作成
  2. リモートに git リポジトリ作成
  3. ローカルに commit -> push
  4. リモートに push

という手順で作成しようとしたのが問題だったのかもしれません。リモートに commit -> push してから、ローカルに clone してくる方が楽だったのかも。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+1

SourceTreeで作った公開鍵をサーバ側に登録してますよね?
書かれてないので。。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/04/06 19:01 編集

    いえ、アクセスは ssh で、Amazon AWS のキーペアを使っています。SourceTree 側では鍵を作っていません(逆に AWS のキーをインポートしています)
    ※ユーザは ec2-user ではなく、別のにしていますが、キーペアは同じになるように .ssh 以下をコピーしてあります

    キャンセル

  • 2017/04/06 19:55 編集

    こんなのありましたがgit remoteの再構築してみてはいかがですか?
    http://qiita.com/bird_tummy/items/216d760c9c05e8470014

    キャンセル

  • 2017/04/07 10:36

    うーん…これはローカル側で行う作業ですよね? ローカル側は SourceTree なので、これには該当しないような…

    キャンセル

  • 2017/04/07 11:22 編集

    あ、いえ、SourceTreeだけでリモートの再構築できなかったはずなので、コマンドとあわせないと駄目かと思ってます。
    ローカルでベアリポジトリ作成できないとかSourceTreeだけではできないこと多くて。。
    あとSourcetreeで不具合おきた場合、リポジトリを破棄して
    Cloneからやり直したほうが早かったりしますよ。
    ちなみにベアリポジトリのcloneではエラーが無かったんですよね?

    キャンセル

  • 2017/04/07 11:51

    元々ローカルにソースがあって、それを git で管理できるようにするために、
    1. ローカルに git リポジトリを生成(git init --bare)
    2. リモートに git リポジトリを生成
    3. ローカルで commit->push
    4. リモートに push
    という作業なので、clone はしていないのです。先にリモートだけ作って push して、ローカルに clone すればよかったのか……

    なんとか自己解決しました。

    キャンセル

  • 2017/04/07 13:29

    ああそういうことですか。
    なるほど。了解しました。お疲れ様でした。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.50%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • AWS(Amazon Web Services)

    2004questions

    Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

  • Git

    1284questions

    Gitはオープンソースの分散バージョン管理システム(DVCS)です。

  • Red Hat Enterprise

    111questions

    Red Hat Enterpriseは、レッドハット社により開発・サポートが行われている業務向けLinuxディストリビューションです。オープンソースで無償で利用することができ、バイナリ版の入手・サポートは有償です。商用ディストリビューションとして人気が高く、代表的なLinuxの選択肢の一つです。