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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Git

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

AWS(Amazon Web Services)

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

Red Hat Enterprise

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

Q&A

解決済

2回答

2025閲覧

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

tacsheaven

総合スコア13703

Git

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

AWS(Amazon Web Services)

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

Red Hat Enterprise

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

0グッド

1クリップ

投稿2017/04/06 05:05

作業したこと

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.

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

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

  1. リモートの git リポジトリを作成する際に --shared オプションを追加していなかった

対策:直接 gitリポジトリの config を修正し、[core] セクションに sharedrepository = 1 を追加

  1. 上の状態で push したら「リビジョンが合ってない」と言われた

対策:SourceTree で一回 pull を行った(念のためソースファイルはバックアップを取った)

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

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

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

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

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

投稿2017/04/07 02:48

編集2017/04/07 03:04
tacsheaven

総合スコア13703

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

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

投稿2017/04/06 09:29

lazhuward

総合スコア1294

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tacsheaven

2017/04/06 10:31 編集

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

2017/04/07 01:36

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

2017/04/07 02:23 編集

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

2017/04/07 02:51

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

2017/04/07 04:29

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問