既にローカルでgit管理しているものをgithubにpushする
想定している状況
- とりあえず、ローカルで開発をしていた
- もちろん、git initして、作業毎にgit commitをしている
- ブランチは切ってなくて、masterブランチで作業している
- 一通り実装したので、githubに公開しようと思った
- githubでリポジトリを作ったけど、どうやってpushしていいかわからん
- githubでリポジトリを作った時の、LICENSEやらREADME.mdは残しておきたい*1
手順
github上でSSHのclone URLをコピーしてきます。
例:git@github.com:noboru-i/irkit.git
git管理しているディレクトリにて、下記のコマンドを実行します。
git remote add origin git@github.com:noboru-i/irkit.git git fetch
これにより、origin/masterとして、github上のmasterブランチを参照できるようになりました。
なので、origin/masterを、ローカルのmasterにリベースします。*2(masterブランチをチェックアウトしている前提)
git rebase origin/master
これで、ローカルのmasterブランチはLICENSEやらREADME.mdが存在している状態になります。
なので、これをpushします。
git push origin master
一本道になりました。
一番左のコミットがgithubで自動的にコミットされたもので、それ以降のものがローカルでコミットしていたものです。
時系列はひっくり返ってしまいますが、意味的にはこんな感じでいいんじゃないでしょうか?
ちなみに、mergeしたらこんな感じに、入り口2つになったので、なんか微妙だなーと。
もっといいやり方があるような気はします。
余談
マージしてpushしちゃったあとの復旧方法は下記の通りです。
git reset --hard c62d6a3 git co -b o_master git reset --hard e14b7566ca35c5910dd0769d3bdadb59f1499231 git push -f origin o_master:master git co master git b -d o_master
- c62d6a3:1個前(margeする前)のコミット
- e14b7566ca35c5910dd0769d3bdadb59f1499231:githubの初期コミット
なにをやっているかというと、下記のような感じ。
- masterのマージコミットを破棄
- o_masterブランチにて、元のorigin/master を再現し、強制push
- masterをチェックアウトしなおし、不要になったo_masterブランチを削除
- 作者: 松下雅和,船ヶ山慶,平木聡,土橋林太郎,三上丈晴
- 出版社/メーカー: シーアンドアール研究所
- 発売日: 2014/04/09
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (4件) を見る
GitHub実践入門 ~Pull Requestによる開発の変革 (WEB+DB PRESS plus)
- 作者: 大塚弘記
- 出版社/メーカー: 技術評論社
- 発売日: 2014/03/20
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (5件) を見る