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

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

ただいまの
回答率

87.49%

Github: 外部からダウンロードしたプロジェクトを自分のGithubで共有する方法

解決済

回答 1

投稿 編集

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

score 23

前提・実現したいこと

android studioでGet from Version Controlから公式サイトのexampleをダウンロードしました。
ある程度操作し、自分でコメントを追記した状態でGithubに残しておきたいので、自分のGithubに共有したいと思ったのですが、この作業をandroid studioで行うにはどうすれば良いのか、わかりません。

いろんなワードで検索しましたが、うまくヒットしませんでした。

発生している問題

公式などの外部のGithubからダウンロードしたプロジェクトを自分のGithubに共有したいがやり方がわからない。

外部のGithub

補足情報

自分で一から作成したプロジェクトの場合はShere on Githubで簡単に共有できるのですが、外部からのプロジェクトに対しても同じようにしても良いのか、試す前に調べたいと思いましたが見つからないため質問に至りました。
よろしくお願い申し上げます。

追記(2021/10/12)

ご指摘いただいたとおり、欲しいプロジェクトをフォークし、ローカル環境にクローンした後でフォークした自分のGidhubにプッシュしようとしたところエラーが発生しました。
(プッシュ時にトークンを設定しています。)

% git push -u origin master         
To https://github.com/<myName>/river_pod.git
 ! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'https://<token>@github.com/<myName>/river_pod.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.


このエラーの解釈って、『フォーク時の内容とプッシュ時の内容で相違があるのでプッシュに失敗した』ということでしょうか?
もしそうであれば、他人のGithubからダウンロードして自分が編集したものを自分のGithubにプッシュすることは不可能ということになるのでしょうか?

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

質問への追記・修正、ベストアンサー選択の依頼

  • massanmesu

    2021/10/12 14:35

    まさか数時間前まで更新されていたなんて。。。
    ご教授いただいたとおりに変更に追従するところまでエラーもなく完了したのですが、肝心の自分が手を加えた部分が反映されておりませんでした。

    もしかして、私のように公式のexampleに日本語のコメントを加えた状態で自分のGithubにあげておきたいと思う人は少数なのでしょうか?ここまで複雑なことをしないとできないのはほとんどの人が求めていないアクションなのかな、と邪推してしまいます。。。

    キャンセル

  • hoshi-takanori

    2021/10/12 15:02

    手を加えた部分は、もしかしてまだ commit してなかったりしますか?
    また、git の操作に関しては、この程度のことは複雑なうちに入らないと思います…。

    キャンセル

  • massanmesu

    2021/10/12 16:35

    自分の知能の低さが嫌になります。
    兎にも角にもご対応ありがとうございました。

    キャンセル

回答 1

checkベストアンサー

+1

[質問への追記・修正の依頼] の内容読んだ上で回答します。

まず現在リポジトリが3つあるのでそれを先に整理します。

 呼び方   内容 
 元リポ   公式 https://github.com/rrousselGit/river_pod/tree/master/examples/marvel 
 フォークリポ   フォークしたリポジトリ 
 自リポ   はじめにダウンロードしたフォルダ 

以下この呼び方で書きます。

はじめに、フォークリポを今一度最新化(pull)してください。
このとき、フォークリポに差分があればエラーが発生すると思うので、
pull する前に一度全ての変更を破棄しておいてください。
あなたが書いた日本語のコメントは自リポにあるはずですから、フォークリポの変更は破棄していいはずです。

次に、最新化したフォークリポを、.git フォルダだけ残して全て削除してください。
削除したら、.git フォルダ以外の自リポのファイルをコピーしてください。要はフォークリポの内容を自リポに置き換えてます。
.git フォルダまで上書きしてしまうと意味ないので、.git は必ず除外してください。
(一度削除するのは、もし最初にダウンロードしてから今までの間にファイルが追加されていた場合気づけないからです)

ここでフォークリポを確認すると、いくつか差分が出ていると思います。
そこから、自分が加えた変更のみをステージングし、コミットしてください。
見に覚えのない差分は、最初にダウンロードしてから今までの間に元リポで行われた変更ですので、
それはコミットしないようにしてください。

コミットができたらそのままフォークリポを push して完了です。

もしこの方法でもうまくいかないとうのなら、妥協して元リポと紐付かないリポジトリとして管理することをおすすめします。

なお本来は、すでに書かれてるとおりですが

  1. 公式のリポジトリをフォーク
  2. フォークしたリポジトリを編集し、作業していく

というのが正しい流れでした。
しかしここであなたはフォークせずに Git 管理されていないファイルをダウンロードして編集してしまいました。
そのため、あとから Git 管理と元リポジトリとの紐付けを行おうとしたせいで少々面倒になっています。
ですのではじめから正しい流れで作業していたら特に困ることはなかったかな…と思います。
(別に咎めているわけではありません)

-- 余談 --

私のように公式のexampleに日本語のコメントを加えた状態で自分のGithubにあげておきたいと思う人は少数なのでしょうか?

普通です。むしろそれが GitHub の主たる機能です。
日本語のコメント追加に限らず、自分で機能を拡張したりといろいろいじって自分のリポジトリとして管理するのは一般的なつかいかたです。

あともしかしたら Git と GitHub を同じものだと思ってないでしょうか?
Git はツールの名前、GitHub は Git を使ったサービスということを理解しないと今後どちらの機能か区別できず混乱することがでてくるかなと思いました。
そうですね、例えるならちょうど Wiki/Wikipedia の関係とおなじです。
Wiki 形式の百科辞書が Wikipedia。

最後に、Git をコマンドで操作されてるみたいですが、
慣れないうちは SourceTree とか Fork Client とか使ったほうがいいと思います。

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2021/10/12 16:33

    詳しい解説ありがとうございます。とても文章がわかりやすく感動しています。

    日本語のコメントの量は多くなかったので、正しい流れで一からやり直したところ、うまくプッシュできました。
    GitとGithubの違いは把握しているつもりですが、数ヶ月前に最低限の勉強を一度だけしただけなので再度勉強する必要があると実感しました。

    キャンセル

  • 2021/10/14 11:00

    うまくできたようでよかったです!

    そうですね、はじめからやり直してしまったほうが早い場合もあります。
    本来やりたかったことは単純ですが、今回は違う入り口からスタートしてしまったがゆえに難しくなっただけなので、Git 理解できてないかなとか思わなくても大丈夫です。
    現に本来の正しい手順はすぐに理解して実行できているので。

    キャンセル

  • 2021/10/14 14:14

    励みになります。
    GrassfieldKさんのような優しくてわかりやすい説明ができるエンジニアを目指したいです。

    キャンセル

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

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

関連した質問

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