GitHubからダウンロードしたフォルダをpushする方法

2020年3月27日

単刀直入に言うと、そもそもcloneしてしまえばこんなことは必要ないです。
コマンドプロンプトとか、VSCodeのターミナルから

  • cd (フォルダが作られてほしいディレクトリ。絶対パスでいい)
  • git clone -b (ブランチ名) https://github.com/~/~.git(←レポジトリのURL)

でいいです。これでもうpushできる。

最初のcdは、コマンドを打ったところの直下にフォルダが生成されるから、そのために移動するだけ。
C:\Users\Public\DocumentsにすればDocumentsにフォルダ(一個)が生成される。

こんな人に

開発の引継ぎをすることになった。
GitHubにあるコードをダウンロードした。
コードを変更、add, commitして、いざpushしようとしたらできない!という人へ。

環境

VSCode, Gitインストール済み

やる作業

プロジェクトを開く

まずは適切な位置にzipを解凍。
VSCodeを起動してOpen Folderでプロジェクトをを選んで開く。

ターミナルで初期設定

TerminalからNew Terminalで開いて、

  • git init
  • git remote add origin https://github.com/~/~.git(←レポジトリのURL)
  • git add .
  • git commit -m “(メッセージ)"
  • git fetch origin (ブランチ名)
  • git merge –allow-unrelated-histories origin/(ブランチ名)
    ここでconflictが発生することがある(初期設定の違いのせい?)
    丁寧にコードをいじって解消してもいいし、特にconflict部分を両方の要素を反映して直す必要がないなら
    git checkout –theirs (conflictしたファイル名) で全面的に変えればいい。(theirsはoursでも可)
    この場合は、以下の二つを再び実行

    • git add .
    • git commit -m “(メッセージ)"
  • git push origin (ブランチ名)
    error: src refspec hello does not match anyって言われたら、

    • git push origin HEAD:(ブランチ名)

これで完了。

(追記)そういえばGitHubにログイン済みの前提だった…
もし、オマエハダレダ的なエラーが出てきたらこれを。

  • git config –global user.name (ユーザー名)
  • git config –global user.email (メルアド)

どこかのタイミングでログインページ or メッセージが出てくると思う。

(追記その2)–allow-unrelated-historiesについて
Zipでダウンロードすると、gitのワークツリーが引き継がれない。(※)
そのため、ローカルレポジトリとリモートレポジトリで履歴の乖離が起きてる。
だからこれでその違いを容認しなければならない。

※というかこれのせいであんなめんどくさいことをやる羽目になる。