twitter icon   twitter icon   rss icon

Linux.com Japan

Home Linux コミュニティ ブログ 未来のいつか ローカルで作ったリポジトリをgithubに初めてpushする方法

ローカルで作ったリポジトリをgithubに初めてpushする方法

例えば以下のようにローカルにgitで管理していて、ふとgithubあたりで公開したくなったとする。はじめからgithubにレポジトリを持っていた場合は、それを $ git clone して、ローカルでごにょごにょして $ git push すればいいのだけど、その順番が逆の場合。 $ git init $ git add . $ git commit -m "initial commit" ... ここで、あー、githubにpushしたいなーとふと思う。 おもむろにgithubにsign inしてrepositoryをnewする。仮にユーザ名がuser-nameでリポジトリがrepositoryというのを作ったすると、ローカルからのpushは下記のような感じになる。 $ git remote add origin このメールアドレスは、スパムロボットから保護されています。アドレスを確認するにはJavaScriptを有効にしてください :user-name/repository 最初にremoteのリポジトリを指定する。 これでpushすればいいのだけど、先にローカルのレポジトリができているので、そのままpushしようとすると下記のように言われる。 $ git push origin master Warning: Permanently added the RSA host key for IP address 'xxx.xxx.xxx.xxx' to the list of known hosts. Identity added: /Users/user-name/.ssh/id_rsa (/Users/user-name/.ssh/id_rsa) To このメールアドレスは、スパムロボットから保護されています。アドレスを確認するにはJavaScriptを有効にしてください :user-name/repository ! [rejected] master -> master (non-fast-forward) error: failed to push some refs to ' このメールアドレスは、スパムロボットから保護されています。アドレスを確認するにはJavaScriptを有効にしてください :user-name/repository' To prevent you from losing history,...

例えば以下のようにローカルにgitで管理していて、ふとgithubあたりで公開したくなったとする。はじめからgithubにレポジトリを持っていた場合は、それを $ git clone して、ローカルでごにょごにょして $ git push すればいいのだけど、その順番が逆の場合。

$ git init
$ git add .
$ git commit -m "initial commit"
...

ここで、あー、githubにpushしたいなーとふと思う。

おもむろにgithubにsign inしてrepositoryをnewする。仮にユーザ名がuser-nameでリポジトリがrepositoryというのを作ったすると、ローカルからのpushは下記のような感じになる。

$ git remote add origin 
 このメールアドレスは、スパムロボットから保護されています。アドレスを確認するにはJavaScriptを有効にしてください
 :user-name/repository

最初にremoteのリポジトリを指定する。

これでpushすればいいのだけど、先にローカルのレポジトリができているので、そのままpushしようとすると下記のように言われる。

$ git push origin master
Warning: Permanently added the RSA host key for IP address 'xxx.xxx.xxx.xxx' to the list of known hosts.
Identity added: /Users/user-name/.ssh/id_rsa (/Users/user-name/.ssh/id_rsa)
To 
 このメールアドレスは、スパムロボットから保護されています。アドレスを確認するにはJavaScriptを有効にしてください
 :user-name/repository
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to '
 このメールアドレスは、スパムロボットから保護されています。アドレスを確認するにはJavaScriptを有効にしてください
 :user-name/repository'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again.  See the
'Note about fast-forwards' section of 'git push --help' for details.

fast-forward updateじゃないのでrejectされちゃう。

これは、remoteのレポジトリーをfetchしてmergeしてpushすればよい。

$ git fetch
warning: no common commits
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From github.com:user-name/repository
 * [new branch]      master     -> origin/master
$ git status
# On branch master
nothing to commit (working directory clean)
$ git merge origin/master
Merge made by the 'recursive' strategy.
 README.md |    4 ++++
 1 files changed, 4 insertions(+), 0 deletions(-)
 create mode 100644 README.md
$ git status
# On branch master
nothing to commit (working directory clean)
$ git push
Counting objects: 248, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (229/229), done.
Writing objects: 100% (247/247), 85.98 KiB, done.
Total 247 (delta 86), reused 0 (delta 0)
To 
 このメールアドレスは、スパムロボットから保護されています。アドレスを確認するにはJavaScriptを有効にしてください
 :user-name/repository
   1211ccd..18f61bd  master -> master

というような感じでmergeがpushできた。mergeした時にコンフリクトしたらば、それは手動で解決する。

ローカルでごにょごにょしていて、会社のレポジトリにpushして社内で公開するような時にも同様にできると思う。

ssh-keyなどは事前に登録しておいてください。

Read more at 未来のいつか
Linux Foundationメンバーシップ

30人のカーネル開発者

人気コンテンツ


Linux Foundationについて

Linux Foundation はLinux の普及,保護,標準化を進めるためにオープンソース コミュニティに資源とサービスを提供しています

 

The Linux Foundation Japan

サイトマップ

問い合わせ先

サイトに関するお問い合わせはこちらまで

Linux Foundation Japan

Linux Foundation

Linux Training

提案、要望

Linux.com JAPANでは広く皆様の提案、要望、投稿を受け付ける予定です。

乞うご期待!