ローカルフォルダに作成済みのファイルをGithubに登録する方法のメモ。地味にはまったので記録を残す。
#手順
1 リモートリポジトリを作成する
Githubにログインし、Repositoriesタブ>New>Create a new repositoryと遷移して作成する。「Initialize this repository with a README」にチェックを付けた場合、後述する「7 リモートリポジトリにpushする」のタイミングでひと手間必要になるので注意。
2 ローカルフォルダに移動する
$ cd hoge
3 ローカルリポジトリを作成する
$ git init
4 ローカルフォルダのファイルをインデックスに登録する
$ git add .
5 コミットする
$ git commit -m "Initial commit"
6 リモートリポジトリのアクセス先を設定する
$ git remote add origin <1で作成したレポジトリのURL>
7 リモートリポジトリにpushする
$ git push -u origin master
※「Initialize this repository with a README」にチェックを付けた場合
pushしたタイミングで以下のエラーが出る。おそらくリモートレポジトリ追加時にREADME.md
を追加していることが原因らしい。
To <1で作成したレポジトリのURL>
! [rejected] master -> master (fetch first)
error: failed to push some refs to '<1で作成したレポジトリのURL>'
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.
エラーにしたがいgit pull
をしてみる。
git pull
warning: no common commits
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
From <1で作成したレポジトリのURL>
* [new branch] master -> origin/master
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-to=origin/<branch> master
Please specify which branch you want to merge with.
と出ているので、試しにgit pull <1で作成したレポジトリのURL> master
と打ってみる。
git pull <1で作成したレポジトリのURL> master
From <1で作成したレポジトリのURL>
* branch master -> FETCH_HEAD
fatal: refusing to merge unrelated histories
fatal: refusing to merge unrelated histories
となっているので、--allow-unrelated-histories
オプションをつけて再度実行してみる。
git pull <1で作成したレポジトリのURL> master --allow-unrelated-histories
From <1で作成したレポジトリのURL>
* branch master -> FETCH_HEAD
Merge made by the 'recursive' strategy.
README.md | 1 +
1 file changed, 1 insertion(+)
create mode 100644 README.md
これでやっとリモートレポジトリがpullできた状態になるので、「7 リモートリポジトリにpushする」が実行可能になる。
#あとがき
新規でレポジトリを作成する際にREADME.md
を作成する癖があるので、はまってしまった。
ちなみに、いくつかのサイトで「git remote addコマンドでリモートリモジトリを追加する」と書かれていたが、この表現だとgit remote addコマンドでGithub上に新たなレポジトリが作成できるように読み取れてしまい、混乱した。同コマンドはローカルレポジトリをどのリモートレポジトリに紐付けるか設定するためのものなのかと理解している。